subprocess.Popen尝试写入不存在的管道

时间:2013-09-13 22:51:13

标签: python subprocess popen

为什么以下不起作用?

import subprocess

process = subprocess.Popen('cmd.exe', shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=None)


我得到的输出如下:

The process tried to write to a nonexistent pipe.
The process tried to write to a nonexistent pipe.
The process tried to write to a nonexistent pipe.
The process tried to write to a nonexistent pipe.
The process tried to write to a nonexistent pipe.

之后,该过程终止而没有错误。我正在运行Windows 7。

2 个答案:

答案 0 :(得分:1)

我正在运行Windows 10,并且遇到相同的问题。如果我将stdout和stderr设置为相同的值,该错误对我来说就消失了。尝试将它们都设置为subprocess.PIPE而不是stdout。

答案 1 :(得分:0)

尝试:

import subprocess
subprocess.run(["echo", "Hello, world!"], shell=True)

这使用默认的stdout和stderr,而不是创建PIPE。