2024-04-20 00:41:07 发布
网友
我试着运行这样一个过程:
cmd = "qry_db -value x > /tmp/somefile" os.popen(cmd)
有时,qry\u db会返回一个错误,这是正常的。但我不想把错误印在外壳上,有什么办法吗?你知道吗
不要使用os.popen()。改用subprocess模块:
os.popen()
subprocess
import subprocess with open('/tmp/somefile', 'w') as tmpfile: subprocess.call(['qry_db', '-value', 'x'], stdout=tmpfile, stderr=subprocess.DEVNULL)
这将stderr重定向到/dev/null,有效地消除错误。stdout仍重定向到临时文件。您可能希望使用^{}将输出直接读入Python脚本,而不是通过管道来实现。您仍然可以使用stderr=subprocess.DEVNULL来消除错误输出。你知道吗
stderr
/dev/null
stdout
stderr=subprocess.DEVNULL
subprocess.DEVNULL是在python3.3中添加的。如果您使用的是早期版本的Python,请使用:
subprocess.DEVNULL
import subprocess import os with open('/tmp/somefile', 'w') as tmpfile, open(os.devnull) as devnull: subprocess.call(['qry_db', '-value', 'x'], stdout=tmpfile, stderr=devnull)
把这个写在程序的开头。你知道吗
import sys sys.stderr = open('error.log', 'w')
这会将所有错误写入文件error.log。你知道吗
error.log
或者,如果您根本不想记录错误,在Unix系统上,使用文件/dev/null
sys.stderr = open('error.log', 'w')
同样,您可以使用sys.stdout将所有输出从终端发送出去
sys.stdout
不要使用
os.popen()
。改用subprocess
模块:这将} 将输出直接读入Python脚本,而不是通过管道来实现。您仍然可以使用
stderr
重定向到/dev/null
,有效地消除错误。stdout
仍重定向到临时文件。您可能希望使用^{stderr=subprocess.DEVNULL
来消除错误输出。你知道吗subprocess.DEVNULL
是在python3.3中添加的。如果您使用的是早期版本的Python,请使用:把这个写在程序的开头。你知道吗
这会将所有错误写入文件
error.log
。你知道吗或者,如果您根本不想记录错误,在Unix系统上,使用文件
/dev/null
同样,您可以使用
sys.stdout
将所有输出从终端发送出去相关问题 更多 >
编程相关推荐