【发布时间】:2017-04-29 20:49:45
【问题描述】:
我有一个 python 脚本,使用subprocess.call() 执行多个命令。我需要使用标准输入将 gzip 压缩文件中的数据传递给其中一个命令,但无论我做什么,该命令显然都会获取 gzip 压缩数据。
这是我认为应该起作用的:
import gzip
from subprocess import call
in_fname = 'test.gz'
out_fname = 'test.txt'
gz = gzip.open(in_fname, 'rb')
txt = open(out_fname, 'w')
call(['cat'], stdin=gz, stdout=txt)
但最后,'test.txt' 被压缩并且与压缩后的输入文件大小完全相同。
如果我调用gz.read(),那么我会得到正确的解压缩数据,正如预期的那样。要将 gzip 压缩文件用作标准输入,我需要做什么?
【问题讨论】: