Python Subprocess.run标准输出

问题描述 投票:0回答:2

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

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仍然会进行日志记录

python-3.x subprocess
2个回答
1
投票

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

这应该会抑制函数的输出

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

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


0
投票

只需关闭文件描述符:

process.stdout.close()

process是你想要阅读的过程。

© www.soinside.com 2019 - 2024. All rights reserved.