У меня есть множество файлов, сжатых в формате bz2, и я пытаюсь распаковать их во временный каталог, используя Python для последующего анализа.Существуют сотни тысяч файлов, поэтому распаковка файлов вручную невозможна, поэтому я написал следующий сценарий.
Моя проблема заключается в том, что всякий раз, когда я пытаюсь это сделать, максимальный размер файла составляет 900 КБ, даже еслиручная распаковка имеет каждый файл около 6 МБ.Я не уверен, является ли это недостатком моего кода и как я сохраняю данные в виде строки для последующего копирования в файл или проблемы с чем-то другим.Я пробовал это с разными файлами, и я знаю, что это работает для файлов размером менее 900 КБ.Кто-нибудь еще сталкивался с подобной проблемой и знает решение?
Мой код приведен ниже:
import numpy as np
import bz2
import os
import glob
def unzip_f(filepath):
'''
Input a filepath specifying a group of Himiwari .bz2 files with common names
Outputs the path of all the temporary files that have been uncompressed
'''
cpath = os.getcwd() #get current path
filenames_ = [] #list to add filenames to for future use
for zipped_file in glob.glob(filepath): #loop over the files that meet the name criterea
with bz2.BZ2File(zipped_file,'rb') as zipfile: #Read in the bz2 files
newfilepath = cpath +'/temp/'+zipped_file[-47:-4] #create a temporary file
with open(newfilepath, "wb") as tmpfile: #open the temporary file
for i,line in enumerate(zipfile.readlines()):
tmpfile.write(line) #write the data from the compressed file to the temporary file
filenames_.append(newfilepath)
return filenames_
path_='test/HS_H08_20180930_0710_B13_FLDK_R20_S*bz2'
unzip_f(path_)
Возвращает правильные пути к файлам с неправильными размерами, ограниченными 900 кб.