如何抑制stdout&;在python中成功之前使用stderr?
我想重复代码块直到成功输出,但只想显示成功的消息如何抑制stdout&;在python中成功之前使用stderr?,python,python-3.x,Python,Python 3.x,我想重复代码块直到成功输出,但只想显示成功的消息 while i < 6: try: sys.tracebacklimit = 0 #this line seems not work gluster_volume_names = [] gstatus_output = subprocess.check_output('gstatus -a -o json ', shell=True).decode() date, time
while i < 6:
try:
sys.tracebacklimit = 0 #this line seems not work
gluster_volume_names = []
gstatus_output = subprocess.check_output('gstatus -a -o json ', shell=True).decode()
date, time, json_part = gstatus_output.split(maxsplit=2)
gluster_info = json.loads(json_part)
volume_list = gluster_info["volume_summary"]
....
....
break
except:
i += 1
continue
请帮忙 如果您只想在linux系统上抑制控制台中的错误,可以尝试:
pythonyourcode.py2>/dev/null
使用此选项还可以抑制标准输出:
python yourCode.py 1>/dev/null
如果您只想在linux系统上抑制控制台中的错误,可以尝试:
pythonyourcode.py2>/dev/null
使用此选项还可以抑制标准输出:
python yourCode.py 1>/dev/null而不是使用子流程。检查输出
,您应该使用标准子流程。运行
方法并将标准错误传递到/dev/null。请改用以下方法:
gstatus\u output=subprocess.run('gstatus-a-o json',shell=True,stdout=subprocess.PIPE,stderr=subprocess.DEVNULL)。stdout.decode()
而不是使用子流程。检查\u output
,您应该使用标准的子流程。run
方法并将标准错误传递到/dev/null。请改用以下方法:
gstatus\u output=subprocess.run('gstatus-a-o json',shell=True,stdout=subprocess.PIPE,stderr=subprocess.DEVNULL)。stdout.decode()
一种可能性是将标准输出和标准错误重定向到字符串。执行后,您可以选择是打印字符串的结果,还是放弃并重试
from contextlib import redirect_stdout, redirect_stderr
import io
f = io.StringIO()
with redirect_stdout(f):
with redirect_stderr(f):
.... whatever you want ....
s = f.getvalue()
一种可能是将标准输出和标准错误重定向到字符串。执行后,您可以选择是打印字符串的结果,还是放弃并重试
from contextlib import redirect_stdout, redirect_stderr
import io
f = io.StringIO()
with redirect_stdout(f):
with redirect_stderr(f):
.... whatever you want ....
s = f.getvalue()
此脚本由另一个具有硬编码行的应用程序启动。我不能使用2>/dev/null。叹息。。。但感谢您的快速响应@Cowboy_patrick此脚本是由另一个具有硬编码行的应用程序启动的。我不能使用2>/dev/null。叹息。。。但是感谢您在文档中对@Cowboy\u patrick的快速响应,该文档用于重定向\u stdout
:“它对子流程的输出也没有影响。”哦。很抱歉我错过了。从重定向的文档中,stdout
:“它对子流程的输出也没有影响。”哦。很抱歉我错过了,太棒了!在我的代码中使用“gstatus-a-ojson&&sleep2”进行测试,并按预期运行。非常感谢你,我们好!在我的代码中使用“gstatus-a-ojson&&sleep2”进行测试,并按预期运行。非常感谢你