【问题标题】:Python Subprocess.run standard outPython Subprocess.run 标准输出
【发布时间】:2019-04-15 18:37:57
【问题描述】:

我有以下按预期执行的函数。

def get_files(paths):
    for path in paths:
        file_name = parse_path(path)
        csv_command = "curl -b ./cookie {} > ./tmp/{}".format(path, file_name)
        subprocess.run([csv_command], shell=True)
    print("success")

我的问题是我也在从子流程中捕获标准输出。如何修改函数以忽略子流程中的标准。我将使用记录器进行记录,并且需要确保 STDout 仍会发生记录

【问题讨论】:

    标签: python-3.x subprocess


    【解决方案1】:

    将句柄传递给标准输出的 DEVNULL 目录。 (可以使用 subprocess.DEVNULL 访问)

    这应该会抑制函数的输出

    subprocess.run([csv_command], shell=True, stdout=subprocess.DEVNULL)
    

    您可以通过阅读此页面查看更多选项:https://docs.python.org/3/library/subprocess.html#subprocess.DEVNULL

    【讨论】:

      【解决方案2】:

      只需关闭文件描述符:

      process.stdout.close()
      

      process 是您不想读取的进程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-01
        • 2020-11-30
        • 2021-12-13
        • 2020-03-15
        • 1970-01-01
        • 2011-11-30
        相关资源
        最近更新 更多