我有一个.gz
文件,我需要使用python获取其中的文件名。
这个问题是一样的这一个
唯一的区别是我的文件.gz
不是,.tar.gz
所以tarfile
库在这里没有帮助我
我正在使用requests
库来请求URL。响应是一个压缩文件。
这是我用来下载文件的代码
response = requests.get(line.rstrip(), stream=True)
if response.status_code == 200:
with open(str(base_output_dir)+"/"+str(current_dir)+"/"+str(count)+".gz", 'wb') as out_file:
shutil.copyfileobj(response.raw, out_file)
del response
例如,此代码以名称下载文件1.gz
。现在,如果我使用存档管理器打开文件,则该文件将包含以下内容my_latest_data.json
我需要提取文件,输出为my_latest_data.json
。
这是我用来提取文件的代码
inF = gzip.open(f, 'rb')
outfilename = f.split(".")[0]
outF = open(outfilename, 'wb')
outF.write(inF.read())
inF.close()
outF.close()
该outputfilename
变量是我在脚本中提供的字符串,但我需要真实的文件名(my_latest_data.json
)
您不能,因为Gzip不是存档格式。
它本身就是一个废话,所以让我比在评论中做的更多。
只是压缩
“只是压缩系统”意味着Gzip对输入字节(通常来自文件)进行操作并输出压缩字节。您不知道其中的字节代表多个文件还是仅代表一个文件-它只是已压缩的字节流。例如,这就是为什么您可以通过网络接受压缩数据的原因。它的bytes_in-> bytes_out。
什么是清单?
清单是归档文件中的标头,充当该目录的目录。请注意,现在我使用的是术语“存档”,而不是“压缩字节流”。存档意味着它是清单所引用的文件或段的集合-压缩的字节流只是字节流。
反正Gzip里面有什么?
.gz文件内容的简化描述如下:
而已。没有清单。
另一方面,存档格式将在内部显示清单。这就是tar库的所在。Tar只是将一堆位推到一个文件中的一种方法,并将清单放在最前面,让您知道原始文件的名称以及它们的大小。连接到存档中。因此,.tar.gz
是如此普遍。
有一些实用程序可让您一次解压缩压缩文件的一部分,或仅在内存中解压缩文件,然后让您检查清单或其中的任何内容。但是任何清单的详细信息都是特定于其中包含的存档格式的。
请注意,这与zip存档不同。Zip是一种存档格式,因此包含清单。Gzip是一个压缩库,例如bzip2和朋友。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句