Python: 将 gzip 文件转换为普通文件
Python: converting gzip file to an ordinary file
我有一个 ent 文件,压缩为 .gz。我需要阅读它并放入 Biopython 解析器。问题是解析器采用文件路径或文件对象,但我得到的是 gzip 文件。现在我这样转换它:
file_path = 'file.ent.gz' # path to current file
file = gzip.open(file_path, 'rb')
content = file.read() # its content
write_path = 'temp.ent' # let's write it back but as ordinary file
write_file = open(write_path, 'w')
write_file.write(content)
write_file.close()
third_file = open(write_path, 'r') #open this ordinary noncompressed file
structure = parser.get_structure('', third_file) #and finally put it into the parser
如您所见,此解决方案很丑陋,但最重要的是它需要大量时间,因为它写入驱动器并读取两次,只要我必须执行数百万次此类操作,这就是一个问题。
谷歌搜索对我一点帮助都没有,文档也没有。是否可以加快转换速度?
您不需要转换任何东西,只需将 gzip.open()
:
返回的流提供给您的解析器
file_path = 'file.ent.gz' # path to current file
with gzip.open(file_path, 'rb') as finput:
structure = parser.get_structure('', finput)
原因:open()
returns文件内容的文件流。 gzip.open()
returns 未压缩文件内容的文件流。这正是您所需要的。这是一句老话的好例子:
if it looks like a duck and walks like a duck, it is a duck
我有一个 ent 文件,压缩为 .gz。我需要阅读它并放入 Biopython 解析器。问题是解析器采用文件路径或文件对象,但我得到的是 gzip 文件。现在我这样转换它:
file_path = 'file.ent.gz' # path to current file
file = gzip.open(file_path, 'rb')
content = file.read() # its content
write_path = 'temp.ent' # let's write it back but as ordinary file
write_file = open(write_path, 'w')
write_file.write(content)
write_file.close()
third_file = open(write_path, 'r') #open this ordinary noncompressed file
structure = parser.get_structure('', third_file) #and finally put it into the parser
如您所见,此解决方案很丑陋,但最重要的是它需要大量时间,因为它写入驱动器并读取两次,只要我必须执行数百万次此类操作,这就是一个问题。
谷歌搜索对我一点帮助都没有,文档也没有。是否可以加快转换速度?
您不需要转换任何东西,只需将 gzip.open()
:
file_path = 'file.ent.gz' # path to current file
with gzip.open(file_path, 'rb') as finput:
structure = parser.get_structure('', finput)
原因:open()
returns文件内容的文件流。 gzip.open()
returns 未压缩文件内容的文件流。这正是您所需要的。这是一句老话的好例子:
if it looks like a duck and walks like a duck, it is a duck