Python Subprocess.run标准输出

时间:2019-04-15 18:37:57

标签: python-3.x subprocess

我有以下按预期执行的功能。

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")

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

2 个答案:

答案 0 :(得分:1)

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

这应该禁止您的函数输出

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

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

答案 1 :(得分:0)

只需关闭文件描述符:

process.stdout.close()

process是您不希望读取的过程。