当使用 end 参数和来自子进程管道的 print 时,Python 不会打印任何内容

Kea*_*nge 4 python printing subprocess python-3.x

我正在尝试使用子进程从另一个 python 脚本中运行 python 脚本。(无需导入,我希望它适用于任何程序,而不仅仅是 python)

这是第一个文件:getting_input.py

name = input("Sample input prompt: ")
Run Code Online (Sandbox Code Playgroud)

这是我用来运行任何 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
Run Code Online (Sandbox Code Playgroud)

但是,当我唯一改变的是添加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... ????
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*nen 5

使用:

print(char, end="", flush=True)
Run Code Online (Sandbox Code Playgroud)