从Python脚本重定向subprocess.run()stderr

2024-09-28 22:18:57 发布

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

上下文:我正在使用SRA工具包从SRA下载访问。下载.sra文件后,需要使用输出stderr到终端的vdb-validate accession检查其完整性。我想将这个stderr捕获到一个文件中,以便以后处理

问题:vdb-validate accession &> validation_file.txt工作正常,将stderr存储在validation_file.txt中,并且不向终端打印任何内容;在使用subprocess.run(["vdb-validate", accession, "&>", validation_file])从Python脚本中使用subprocess.run()调用相同的命令后(accessment和validation_file是变量)输出将打印到终端,并且不会向文件写入任何内容

提前谢谢

注意:我在Linux服务器上使用的是Python 3.6.8


Tags: 文件runtxt终端内容工具包stderrvalidate
1条回答
网友
1楼 · 发布于 2024-09-28 22:18:57

子流程允许您捕获stdout

>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n'

您可以使用stderr=subprocess.STDOUT轻松地将stderr重定向到stdout

>>> subprocess.check_output(
...     "ls non_existent_file; exit 0",
...     stderr=subprocess.STDOUT,
...     shell=True)
'ls: non_existent_file: No such file or directory\n'

相关问题 更多 >