我有以下代码。
from __future__ import print_function
import subprocess
p = subprocess.Popen(['cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.kill()
p.wait()
print(p.stdin.write(b'some'))
我用Python 2.7和Python 3.3运行它。在Python 2.7中,当我尝试写入stdin时,会抛出异常。而在Python 3.3中,这段代码打印4。Python 2.7的subprocess模块与Python 3.3有什么区别?
communicate
而不是.stdin.write
- 这有什么区别吗? - jonrsharpeIOError: [Errno 32] Broken pipe
。当我使用communicate
时,不会抛出异常,但是我需要使用stdin.write
。 - sinitsynsvp.stdin.flush()
,在3.3上是否会出现异常? - Janne Karilap.stdin.flush()
,我会得到一个异常。 - sinitsynsv