2017-09-06 22 views
0

tracertを呼び出して結果を文字列として取得しようとしています。エラーが発生する前にコンソールに結果が表示されるため、tracertコールが正しく機能しているようです。サブプロセスを呼び出すときに "ValueError:閉じたファイルに対する入出力操作"

import subprocess 
    import sys 
    proc = subprocess.Popen(["tracert", "localhost"], stderr=subprocess.PIPE, stdin=subprocess.PIPE) 
    print proc.communicate()[0] 

エラー:

Traceback (most recent call last): 
    File "-", line 207, in <module> 
    main() 
    File "-", line 203, in main 
    tracert("localhost") 
    File "-", line 188, in tracert 
    print proc.communicate()[1] 
ValueError: I/O operation on closed file 

UPDATE:それはバッファリングされていないので、私は、代わりにprintloggingを試してみました

2017-09-07 09:11:57,165 - [test] - INFO - 

Routenverfolgung zu localhost [::1] 

�ber maximal 30 Hops: 



    1 <1 ms <1 ms <1 ms localhost [::1] 



Ablaufverfolgung beendet. 


Traceback (most recent call last): 
    File "-\lib\logging\__init__.py", line 885, in emit 
    self.flush() 
    File "-\logging\__init__.py", line 845, in flush 
    self.stream.flush() 
ValueError: I/O operation on closed file 
+1

私が推測しなければならないのは、 'tracert'が' stdin'を閉じるからです。 – NPE

答えて

0

何とかstdoutが閉じられ、ストリームに書き込めませんでした。 問題はsubprocessとまったく関係がありませんでした。

関連する問題