簡體   English   中英

如何在不提取的情況下遍歷包含zip文件的tar.gz文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM