当使用end参数和来自子进程管道

时间:2017-08-31 03:36:12

标签: python-3.x printing subprocess

我试图使用子进程从另一个python脚本中运行python脚本。 (没有导入,我希望这适用于任何程序,而不仅仅是python)

以下是第一个文件:getting_input.py

name = input("Sample input prompt: ")

以下是我用来运行任何shell命令的文件:test.py

import subprocess

proc = subprocess.Popen("python getting_input.py", stdout=subprocess.PIPE)
for char in iter(lambda: proc.stdout.read(1).decode('utf-8'), ''):
    print(char)  # This actually works, printing every character on a new line

但是,当我改变的唯一事情就是在我的print语句中添加end="",绝对不会打印任何内容。

import subprocess

proc = subprocess.Popen("python getting_input.py", stdout=subprocess.PIPE)
for char in iter(lambda: proc.stdout.read(1).decode('utf-8'), ''):
    print(char, end="")  # This doesn't work, nothing at all gets printed... ????

我假设这是某种缓冲问题,但即使我使用python -u test.py运行它并在其中使用python -u getting_input.py我仍然看不到输出。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用:

print(char, end="", flush=True)