我不知道,如果你看到的标准错误居然出现在控制台上,或只运行到Python未能生成一个进程名为“嗒嗒”,这是运行示例时产生您提供...
的例子的输出将是Python的提高的OSError: [Errno 2] No such file or directory
,这是可以预料的,除非你有一个名为可执行脚本“嗒嗒”的PATH
我做了一个简单的测试,并写了一个bash脚本是这样的:
#!/bin/bash
echo "This is stdout"
echo "This is a failure on stderr" >&2
exit 1
给予该脚本可执行权限,我重复您的例子,而是叫我的脚本(在本地目录中名为fail.sh)为后例如:
import subprocess
cmd = './fail.sh'
proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.communicate()
如预期的那样返回('This is stdout\n', 'This is a failure on stderr\n')
。
因此,也许你真正看到的是,不管节目你试图调用(如果它不是胡说),根本就不在你的路径中。
此外还有一个关于在Python中使用str
作为标签的注释:str
是一个内置类型,不应该用作变量或函数的名称,除非您特别要“过载”内置类型,功能。 string
也是一样。