您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将子流程stderr重定向到stdout

将子流程stderr重定向到stdout

仔细阅读源代码即可得出答案。特别是,该文档显示以下内容时会产生误导:

subprocess.STDOUT 表示(…)的特殊值表示标准错误应与标准输出进入同一 。

由于-1stderr=subprocess.STDOUT求值时stdout设置为“认”(技术上来说),因此stderr也设置为“认”。不幸的是,这意味着stderr输出仍然归stderr。

解决此问题,请传入stdout文件而不是subprocess.STDOUT

$ python >/dev/null -c 'import subprocess,sys;subprocess.call(["ls", "/404"],
                        stderr=sys.stdout.buffer)'

或者,为了与旧版2.x Python版本兼容:

$ python >/dev/null -c 'import subprocess,sys;subprocess.call(["ls", "/404"],
                        stderr=sys.stdout.fileno())'
其他 2022/1/1 18:29:35 有509人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶