【发布时间】:2021-10-04 17:47:05
【问题描述】:
我正在尝试将多个 .gz 扩展文件解压缩到单个 .txt 文件中。所有这些文件都有json数据。
我尝试了以下代码:
from glob import glob
import gzip
for fname in glob('.../2020-04/*gz'):
with gzip.open(fname, 'rb') as f_in:
with open('.../datafiles/202004_twitter/decompressed.txt', 'wb') as f_out:
shutil.copyfileobj(f_in, f_out)
但是解压后的.txt文件只有最后一个.gz文件的数据。
【问题讨论】:
-
以
wb模式打开会先擦除文件 -
在循环
gz文件列表之前打开txt文件。然后将数据追加到已经打开的txt。 -
那我应该使用哪种模式?
-
停止一遍又一遍地重新打开文件。仅在循环外部打开一次。
wb如果你不把 open 放在循环里面就可以了。 -
也就是说,把
with open(...) as f_out:放在外面,把for fname in ...:放在里面。