1
我有這段在Linux上正常工作但在Windows上失敗的代碼。創建進程很好,但我得到一個錯誤,並沒有從管道中讀取:Windows上的子流程管道輸出
p = subprocess.Popen(['python', '-u', self.file_to_run,
'-s', '-g', '-i', self.input_file],
universal_newlines=True,
stdout=subprocess.PIPE)
...
out = p.stdout.readline().rstrip()
錯誤我得到的是
Traceback (most recent call last):
File "bench.py", line 59, in <module>
multi.add_process()
File "bench.py", line 47, in add_process
stdout=subprocess.PIPE)
File "c:\python\v2.5.1-ast3\...\lib\subprocess.py", line 615, in __init__
self.stdout = os.fdopen(c2pread, 'rU', bufsize)
OSError: [Errno 22] Invalid argument
我居然創建多個這樣的過程,並根據其輸出計算一些數值,但這是無關緊要的。我需要做的是,多次運行帶有特定參數的腳本,並解析從每個進程的stdout傳輸的數據。
命令是否在shell上工作?我知道,愚蠢的問題,但只是確保。我通常會構建命令字符串並輸出,然後手動運行以確保它可以正常工作。之後,我通常使用shlex來處理參數解析。 – pcalcao 2011-12-14 15:09:50