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