你好,我想知道是否有一种方法可以读取以gzformat存储的,以zipformat存储的未格式化文件。也应该做到这一点,而不要提取python 2.7所不能提供的任何文件格式和外部plugingin。
如果一个zip文件中有一堆gz,我只想读取全部或全部内容(取决于最小的内存使用量),然后将其以txt格式存储在外面。 到目前为止,我的代码可以读取zip中的.log,.gz,.zip和.zip。 这个想法是它应该重复自己直到我们得到主文件! 在此先感谢:=)
.zip --->。gz --->未格式化的文件
def decompress_file(filepath,type,file=None):
result = {}
if type.lower() == '.log':
if file ==None:
inFile = open(filepath, 'r')
return getLog(inFile)
else:
return getLog(file)
if type.lower() == '.gz':
if file == None:
inFile = gzip.open(filepath, "r")
else:
#content = io.BytesIO(file.read())
with file:
Gz_file= open(file,'r')
for gzFiles in file.namelist():
zFile=file.getinfo(file)
return getLog(zFile)
return getLog(inFile)
print inFile
return getLog(inFile)
if type.lower() == '.zip':
if file == None:
with zip.ZipFile(filepath,'r'):
zFile = zip.ZipFile(filepath)
else:
with zip.ZipFile(file,'r'):
zFile = zip.ZipFile(file)
for f_list in zFile.namelist():
content= io.BytesIO(zFile.read(f_list))
pattern = r'(.+)(?P<file>\.zip|\.gz)'
rgz = re.compile(pattern, re.IGNORECASE)
m = rgz.match(f_list)
if m==None:
type = '.log'
decompress_file(f_list,type,zFile)
else:
decompress_file(f_list,m.group('file').lower(),content)
return result
return result
if __name__ == '__main__':
decompress_file("filepath",'.zip' )