0
我想讀取從我的python腳本以C++編寫的可執行文件(A)的輸出。我在Linux上工作。到目前爲止,我知道的唯一途徑是通過子庫python:讀取可執行文件的標準輸出,損壞的流
首先我想
p = Popen(['executable', '-arg_flag1', arg1 ...], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
print "reach here"
stdout_output = p.communicate()[0]
print stdout_output
sys.stdin.read(1)
這竟然掛了我的兩個可執行文件(用99%的CPU使用率)和我的腳本:S:S :S 此外,在這裏打印。
之後,我嘗試:
f = open ("out.txt", 'r+')
command = 'executable -arg_flag1 arg1 ... '
subprocess.call(command, shell=True, stdout=f)
f.seek(0)
content = f.read()
這個工作,但我得到其中一些字符在內容的末尾重複的輸出,甚至更多的價值比預期的產生:S
反正可能有人啓發我更合適的方式來做到這一點?
在此先感謝
對不起,我忘記提及我在p.communicate後有一個sys.stdin.read(1),如編輯後的文章所示,所以python腳本也隨着C++可執行文件一起掛起。 無論如何,我嘗試添加p.wait(p.Popen之後,然後p.communicate之後),沒有運氣。 此外我應該提到「到達這裏」是打印的。 最後我試着p.stdout.read()而不是溝通,再次運氣不佳:( – chefarov