我有以下按预期执行的功能。
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仍会记录日志
答案 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
是您不希望读取的过程。