Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何抑制stdout&;在python中成功之前使用stderr?_Python_Python 3.x - Fatal编程技术网

如何抑制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”进行测试,并按预期运行。非常感谢你