2024-04-19 01:38:22 发布
网友
我想用python运行一个外部进程,只处理它的stderr。在
stderr
我知道我可以使用subprocess.check_output,但是如何将stdout重定向到/dev/null(或者以任何其他方式忽略它),并且只接收stderr?在
subprocess.check_output
/dev/null
不幸的是,您已经标记了这个python-2.7,就像在python3.5及更高版本中一样,使用^{}这很简单:
import subprocess output = subprocess.run(..., stdout=subprocess.DEVNULL, stderr=subprocess.PIPE).stderr
对于check_output(),标准输出无法重定向:
check_output()
在python版本低于3.5的情况下使用^{}对象和^{}。在Python2.7中使用^{}打开/dev/null:
>>> import subprocess >>> import os >>> with open(os.devnull, 'wb') as devnull: ... proc = subprocess.Popen(('ls', 'asdfqwer'), ... stdout=devnull, ... stderr=subprocess.PIPE) ... proc.communicate() ... proc.returncode ... (None, "ls: cannot access 'asdfqwer': No such file or directory\n") 2
Communicate将输入发送到stdin(如果通过管道传输),并从stdout和stderr读取数据,直到到达文件末尾。在
我发现了一个简单的诀窍:
import subprocess stderr_str = subprocess.check_output('command 2>&1 >/dev/null')
这将过滤掉stdout,并只保留stderr。在
不幸的是,您已经标记了这个python-2.7,就像在python3.5及更高版本中一样,使用^{} 这很简单:
对于
^{pr2}$check_output()
,标准输出无法重定向:在python版本低于3.5的情况下使用^{} 对象和^{} 。在Python2.7中使用^{} 打开
/dev/null
:Communicate将输入发送到stdin(如果通过管道传输),并从stdout和stderr读取数据,直到到达文件末尾。在
我发现了一个简单的诀窍:
这将过滤掉stdout,并只保留stderr。在
相关问题 更多 >
编程相关推荐