В настоящее время выполняется команда Bash (через Python subprocess.Popen
), которая читает из stdin
, что-то делает и выводит в stdout
. Что-то вроде:
pid = subprocess.Popen( ["-c", "cmd1 | cmd2"],
stdin = subprocess.PIPE,
stdout = subprocess.PIPE,
shell =True )
output_data = pid.communicate( "input data\n" )
Теперь я хочу изменить это на выполнение другой команды в том же подоболочке, которая изменит состояние до выполнения следующих команд, поэтому моя командная строка оболочки теперь (концептуально) будет:
cmd0; cmd1 | cmd2
Можно ли в этом сценарии отправлять входные данные на cmd1
вместо cmd0
? Я предполагаю, что вывод будет включать вывод cmd0
(который будет пустым), а затем вывод cmd2
.
cmd0
на самом деле ничего не должен читать из stdin
, имеет ли это значение в этой ситуации?
Я знаю, что это, вероятно, просто глупый способ сделать это, я пытаюсь внести исправления в cmd0
, не слишком сильно изменяя другой код. Тем не менее, я открыт для предложений, если есть более чистый способ приблизиться к этому.