正如标题所说,我正在下载一个bz 2文件,里面有一个文件夹和大量的文本文件...
我的第一个版本是在内存中解压缩,但虽然它只有90 mbs当你uncomrpess它,它有60个文件的750 mb每个...电脑去bum!显然不能处理像40 gb的ram XD)
所以,问题是,他们太大了,不能同时保存在内存中的所有...所以我使用这个代码,工程,但它的吮吸(太慢):
response = requests.get('https:/fooweb.com/barfile.bz2')
# save file into disk:
compress_filepath = '{0}/files/sources/{1}'.format(zsets.BASE_DIR, check_time)
with open(compress_filepath, 'wb') as local_file:
local_file.write(response.content)
#We extract the files into folder
extract_folder = compress_filepath + '_ext'
with tarfile.open(compress_filepath, "r:bz2") as tar:
tar.extractall(extract_folder)
# We process one file at a time:
for filename in os.listdir(extract_folder):
filepath = '{0}/{1}'.format(extract_folder,filename)
file = open(filepath, 'r').readlines()
for line in file:
some_processing(line)
有没有一种方法,我可以做到这一点,而不是转储到磁盘...只有解压缩和阅读一个文件从.bz2的时间?
非常感谢您的时间提前,我希望有人知道如何帮助我这...
2条答案
按热度按时间b0zn9rqh1#
nnvyjq4y2#
我是这么做的: