2016-10-13 25 views

答えて

2

入力は行全体が必要ですが、入力は空です。したがって、stderrには例外が書き込まれ、stdoutには何も書き込まれません。 [文字列のsubprocess.Popenコールのストア出力]の

>>> a = Popen(['python3', 'ex1.py'], stdout=PIPE, stdin=PIPE) 
>>> a.communicate(b'\n') 
(b'spam\n', None) 
>>> 
+2

ありがとう、私は 'stderr = PIPE'を追加してからプログラムを実行し、'(b ''、b'Traceback(最も最近の呼び出し最後):\ r \ nファイル "receive_from_sub.py" 5行目、 \ r \ n入力()\ r \ nEOFError:行を読むときのEOF \ r \ n ') ' – user2728397

0

をされて印刷されていない理由インタラクティブシェルでex1.py

>>>from subprocess import Popen ,PIPE 
>>>a=Popen(['python.exe','ex1.py'],stdout=PIPE,stdin=PIPE) 

>>> a.communicate() 

(b'', None) 

>>> 

として保存

input() 
print('spam') 

を持ってsubprocess.check_output

+1

あなたの答えが質問の上でどのように解決するかをもう少し説明できますか? – user2728397

+0

こんにちはRakesh、私はコメントにリンクされた質問を参照してくださいでしたか? [subprocess.popen呼び出しの出力を文字列に格納する](0120-1375-100) この関数は具体的です別のプロセスの出力を得るためのものです。 – sytech

+0

あなたの答えは正しいかもしれませんが、それが正しい理由を説明するほうがずっと良いです。これは、将来の問題を回避する方法を彼らが理解する助けを教える。 –

関連する問題