Python - Подпроцесс, выводящий пустую строку, когда shell = False - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь запустить скрипт из другого каталога и собрать вывод, используя модуль subprocess.По какой-то причине я могу получить вывод только с использованием синтаксиса shell=True, а не синтаксиса shell=False, который возвращает пустую строку.

В качестве начала, когда в командной строке я запускаю:

python ~/example/path/run.py -r arg1 -g arg2

Я получаю вывод 124 в командной строке.

В другом скрипте Python, в совершенно другом каталоге, я запускаю:

import subprocess as sp
sp.check_output('python /Users/user.name/example/path/run.py -r arg1 -g arg2', 
                shell = True)

, который возвращает желаемый результат 124.Тем не менее, я прочитал shell=True, поэтому следует избегать:

import subprocess as sp
sp.check_output(['python',
                 'run.py',
                 '-r arg1',
                 '-g arg2'],
                cwd='/Users/user.name/example/path/')

, который, к сожалению, выдает пустую строку.Я пробовал несколько альтернатив этому, все выводили пустую строку:

import subprocess as sp
sp.check_output(['python',
                 '/Users/user.name/example/path/run.py',
                 '-r arg1',
                 '-g arg2'])

import subprocess as sp
sp.check_output(['python',
                 'run.py',
                 '-r arg1',
                 '-g arg2'],
                cwd='/Users/user.name/example/path/',
                stderr=sp.STDOUT)

import subprocess as sp
sp.check_output(['python',
                 'run.py',
                 '-r', 'arg1',
                 '-g', 'arg2'],
                cwd='/Users/user.name/example/path/',
                stderr=sp.STDOUT)

Извиняюсь за то, что не привел воспроизводимый пример, так как проблема, кажется, возникает специально для этой команды.Например, когда я пытаюсь выполнить команду ls, кажется, что она отлично работает с обоими параметрами синтаксиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...