我想與進程交互。 我可以開始這個過程並打印出前兩行(類似'成功啓動過程')。 現在我想發送一個新的命令到應該返回類似'命令完成'的過程,但沒有任何反應。Python與子進程交互
請幫幫我。
import subprocess
def PrintAndPraseOutput(output, p):
print(output)
if 'sucessfully' in output:
p.stdin.write('command')
cmd = ["./programm"]
p = subprocess.Popen(cmd, universal_newlines=True, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
while p.poll() is None:
output = p.stdout.readline()
PrintAndPraseOutput(output, p)
更新: 同樣的問題,後無產出「過程中成功啓動」
import subprocess
def print_and_parse_output(output, p):
print(output)
if 'successfully' in output:
p.stdin.write('command\n')
with subprocess.Popen(["./programm"], universal_newlines=True, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE) as proc:
while proc.poll() is None:
output = proc.stdout.readline()
print_and_parse_output(output, proc)
這是一個有點難以調試這個不知道'programm'命令做什麼。你寫了嗎,還是可以修改它?也許它不會在其輸出結尾添加換行符,或者刷新「stdout」。 –