Как Вы используете subprocess.check_output () в Python?

Я нашел документацию о subprocess.check_output (), но я не могу найти один с аргументами, и документация не очень подробно. Я использую Python 3 (но пытаюсь выполнить файл Python 2 через Python 3),

Я пытаюсь выполнить эту команду: python py2.py -i test.txt

- я - позиционный параметр для argparse, test.txt - каков-i, py2.py является файлом для выполнения

Я попробовал много из (не работающий) изменения включая: py2output = subprocess.check_output([str('python py2.py '),'-i', 'test.txt'])

py2output = subprocess.check_output([str('python'),'py2.py','-i', test.txt'])

59
задан 29 December 2012 в 06:11

1 ответ

Так как Python 3.5, subprocess.run () рекомендуют более чем subprocess.check_output () :

>>> subprocess.run(['cat','/tmp/text.txt'], stdout=subprocess.PIPE).stdout
b'First line\nSecond line\n'

Начиная с Python 3.7, вместо вышеупомянутого, можно использовать capture_output=true параметр для получения stdout и stderr:

>>> subprocess.run(['cat','/tmp/text.txt'], capture_output=True).stdout
b'First line\nSecond line\n'

кроме того, можно хотеть использовать universal_newlines=True или его эквивалент начиная с Python 3.7 text=True для работы с текстом вместо двоичного файла:

>>> stdout = subprocess.run(['cat', '/tmp/text.txt'], capture_output=True, text=True).stdout
>>> print(stdout)
First line
Second line

См. subprocess.run () документация для получения дополнительной информации.

4
ответ дан 1 November 2019 в 12:42

Другие вопросы по тегам:

Похожие вопросы: