【问题标题】:Redirecting subprocess.run() stderr from Python script从 Python 脚本重定向 subprocess.run() 标准错误
【发布时间】:2020-03-15 23:51:07
【问题描述】:

上下文:我正在使用 SRA 工具包下载以从 SRA 下载加入。下载 .sra 文件后,需要使用 vdb-validate accession 检查其完整性,该 vdb-validate accession 将 stderr 输出到终端。我想将此标准错误捕获到一个文件中以供以后处理。

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

提前致谢。

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

【问题讨论】:

    标签: python subprocess stdout stderr


    【解决方案1】:

    子进程允许你捕获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'
    

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多