2017-08-31 9 views
0

サブプロセスを使用して別のpythonスクリプト内からpythonスクリプトを実行しようとしています。 (いいえインポート、私はこれは任意のプログラムだけでなく、Python用に仕事をしたい)サブプロセスパイプからの印刷でendパラメータを使用すると、Pythonは何も出力しません

は、ここで最初のファイルされる:test.py

getting_input.py

name = input("Sample input prompt: ") 

ここでは、私は任意のシェルコマンドを実行するために使用していたファイルではありません

私が変更する唯一の事は、私のプリントステートメントに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

用途:

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

おかげで私は、あなたがこれがなぜ起こるか任意のアイデアを持っていないことができたとき、私はこれを受け入れるだろうか?暗黙の "\ n"によってバッファが自動的にフラッシュされますか? – Keatinge

+0

何かはおそらくラインバッファリングであり、通常は改行でのみフラッシュされます。 –

関連する問題