Вызов подпроцесса работает только с отладчиком PyCharm

Я сделал скрипт Python, в котором одна строка вызывает grep через subprocess:

master_start_time = subprocess.check_output(["grep", "-a", '"Time"', master_wav]).strip()[-23:]

Когда я запускаю его с помощью моего интерпретатора Python (v. 2.7.12), постоянно появляется следующая ошибка, как при выполнении из PyCharm, так и через удаленную оболочку (поскольку сценарий и данные находятся на удаленном компьютере под управлением Ubuntu 16.04.1):

subprocess.CalledProcessError: Command '['grep', '-a', '"Time"', './DATA/PREDICTING/1014/1014_L.wav']' returned non-zero exit status 1

Однако, как только я запускаю скрипт через удаленный отладчик PyCharm, все работает гладко.

Следующие строки появляются первыми в консоли PyCharm при отладке. Они должны суммировать конфигурацию отладки.

ssh://{user}@{server}:{port}{path to interpreter} -u {path to PyCharm debugger} --multiproc --qt-support --client '0.0.0.0' --port 35567 --file {path to script}
pydev debugger: process 18838 is connecting

Кто-нибудь знает, как я могу предотвратить появление этого?


person vages    schedule 12.01.2017    source источник


Ответы (1)


Оказывается, нужно было убрать двойные кавычки вокруг слова Time в вызове подпроцесса.

master_start_time = subprocess.check_output(["grep", "-a", 'Time', master_wav]).strip()[-23:]
person vages    schedule 12.01.2017
comment
У меня была аналогичная проблема с аналогичным решением. В моем случае я вызывал Python в подпроцессе (чтобы запустить другую версию Python). У меня был дополнительный набор двойных кавычек в третьем аргументе, в котором не было необходимости. Я думаю, что здесь происходит то, что PyCharm, настроенный на присоединение отладчика к подпроцессам, фактически исправляет это для вас (вероятно, случайно). Очевидно, этого не произойдет, если вы не работаете в режиме отладки. - person gkimsey; 06.02.2019