Я знаю, что есть много подобных вопросов, но я действительно не могу понять, что я делаю неправильно. Я пытаюсь выполнить sh: чтение stdout
из файла .exe
, предварительно скомпилированного из .py
.
Это основная программа для выполнения подпроцесс
from subprocess import Popen, PIPE, STDOUT
runcloud = Popen([r'demo2.exe'], stdout=PIPE)
with runcloud.stdout:
for line in iter(runcloud.stdout.readline, b''):
print(line) ##PRINTS NOTHING ??
И это файл .exe перед компиляцией (demo2.exe)
import os
try:
print('RESPONSE')
except:
print('no connection')
os._exit(0)
Для некоторых реализаций мне нужно скомпилировать demo2
и добавьте последнюю строку os._exit()
. Этот .exe
файл при запуске в cmd показывает строку печати. Но не удается распечатать из основной программы, используя subprocess
EDIT: После некоторых комментариев я запустил код без компиляции файла и добавления ключевого слова python
и до сих пор ничего не печатает. Комментарий: Даже если я позволю ему работать с файлом py или просто удалю os._exit(0)
, он все равно ничего не печатает, обратите внимание, что в моем каталоге нет другого файла с аналогичным именем.
РЕДАКТИРОВАТЬ - ВРЕМЕННОЕ РЕШЕНИЕ: После нескольких часов поиска решения, единственным обходным решением было написание кода внутри файла exe
, который сохраняет (я не думаю, что могу назвать это «перенаправлением») выводится в другом файле, например .txt
, или в базу данных с простой настройкой, например SQlite
, затем в основной программе вызывается Popen
, чтобы выполнить exe
с .wait()
и завершить считывание записанных значений в файле. или база данных. Поскольку я не выяснил, почему Popen
не захватывает функции print
в stdout
, и обходной путь можно найти уже в других вопросах, я пока оставлю этот вопрос открытым.