Мне нужно реализовать внешнее приложение для вычисления значений CRC для связи по Modbus. Исполняемые требует ввод строки и возвращает такой вывод:Python subprocess.Popen не работает с stdout
CRC16 = 0x67ED/26605
CRC16 (Modbus) = 0x7CED/31981
я называю программку, а затем введите вход вручную.
p = Popen(["some_file.exe", "-x"], stdin=PIPE)
p.communicate("some_string")
Это работает до сих пор.
Однако я хочу сохранить вывод в переменную или что-то (без дополнительного файла) для дальнейшего использования.
Я знаю, что есть аргументы, STDOUT и STDERR, но когда не печатая
p = Popen([file, "-x"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
ничего не происходит вообще.
У кого-нибудь есть идея, что делать?
Заранее спасибо.
PS: Использование Python 2.7 на Windows 7.
Спасибо за ваш ответ. Я не знаю, но это, похоже, не работает. Мне нужно внести свой вклад в программу, поэтому должна быть 'stdin = PIPE'. Использование только этого аргумента в порядке, но добавление 'stdout = PIPE' не является. Я даже не дошел до того, что могу написать переменную 'output = ...' – mulm
@mulm, если вы используете 'stdin = PIPE', вы должны назначить значение stdin, иначе оно будет равно null. –