[英]How to walk a tar.gz file that contains zip files without extraction
我有一個大的tar.gz文件來使用python腳本進行分析。 tar.gz文件包含許多可能在其中嵌入其他.gz文件的zip文件。 在提取文件之前,我想瀏覽壓縮文件中的目錄結構,以查看是否存在某些文件或目錄。 通過查看tarfile和zipfile模塊,我沒有看到任何允許我在tar.gz文件中獲取zip文件內容表的現有函數。
感謝您的幫助,
如果不解壓縮文件就無法實現。 但是,如果您不想將其提取到磁盤,則無需將其提取到磁盤 。 您可以使用tarfile.TarFile.extractfile
方法獲取類似文件的對象,然后可以將其作為fileobj
參數傳遞給tarfile.open
。 例如,給定這些嵌套的tarfiles:
$ cat bar/baz.txt
This is bar/baz.txt.
$ tar cvfz bar.tgz bar
bar/
bar/baz.txt
$ tar cvfz baz.tgz bar.tgz
bar.tgz
您可以從內部訪問文件,如下所示:
>>> import tarfile
>>> baz = tarfile.open('baz.tgz')
>>> bar = tarfile.open(fileobj=baz.extractfile('bar.tgz'))
>>> bar.extractfile('bar/baz.txt').read()
'This is bar/baz.txt.\n'
他們只是被提取到記憶中。
我懷疑這是不可能的,你必須手動編程。
.tar.gz文件首先是tar,然后連續使用基本上兩個不同的應用程序進行gzip壓縮。 要訪問tar文件,您可能首先必須取消gzip。
此外,一旦您在解壓縮后可以訪問tar文件,它就不能很好地進行隨機訪問。 tar文件中沒有列出內容的中央存儲庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.