Unix Popen.communicate无法gzip large fi

2024-04-23 22:01:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在shell命令之上使用python处理大小超过10gb的gzip文件,因此决定使用subprocess Popen

这是我的密码:

outputdir = '/mnt/json/output/'
inp_cmd='gzip -r ' + outputdir

pipe = Popen(["bash"], stdout =PIPE,stdin=PIPE,stderr=PIPE)
cmd = bytes(inp_cmd.encode('utf8'))
stdout_data,stderr_data = pipe.communicate(input=cmd)

它不会对输出目录中的文件进行gzip压缩。 有出路吗


Tags: 文件命令cmd密码datastderrstdoutshell
2条回答

你这样试过吗:

output_dir = "/mnt/json/output/"

cmd = "gzip -r {}".format(output_dir)

proc = subprocess.Popen(
    cmd,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    stdin=subprocess.PIPE,
    shell=True,
)

out, err = proc.communicate()

最好的方法是使用subprocess.call()而不是subprocess.communicate()

call()等待命令完全执行,而在Popen()中,必须从外部使用wait()方法才能完成执行

相关问题 更多 >