python如何将错误重定向到/dev/null?

2024-05-16 02:01:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python脚本中有这样的乐趣:

def start_pushdata_server(Logger):
    Logger.write_event("Starting pushdata Server..", "INFO")
    retcode, stdout, stderr = run_shell(create_shell_command("pushdata-server 
start"))

我们希望将标准错误从pushdata服务器二进制文件重定向到/dev/null。在

所以我们这样编辑:

^{pr2}$

但是在python代码中添加2>/dev/null是无效的。在

那么我们如何才能在python代码中发送所有来自“pushdata服务器”的错误呢 开始“归零”?在


Tags: 代码dev服务器脚本eventserverdef错误
2条回答

添加到在Unix或Linux中运行的Python脚本中的代码将把所有stderr输出重定向到/dev/null

import os # if you have not already done this
fd = os.open('/dev/null',os.O_WRONLY)
os.dup2(fd,2)

如果只想对部分代码执行此操作:

^{pr2}$

将stderr重定向的代码部分放在这里。然后将stderr恢复到原来的位置:

^{3}$

如果要对stdout执行此操作,请在os.dupos.dup2调用(dup2保持为dup2)中使用1而不是2,并在执行任何一组os.调用之前刷新stdout。如果与代码冲突,请使用不同的名称,而不是fd和/或{}。在

为了避免run_shell(create_shell_command(...))部分的复杂性,不管怎样,它都不是定义良好的,尝试一下

import subprocess
subprocess.run(['pushdata-server', 'start'], stderr=subprocess.DEVNULL)

这根本不涉及shell;您的命令似乎不需要shell。在

相关问题 更多 >