我正在開發一個Python腳本,該腳本應該處理一個tarball並輸出新腳本,並嘗試保留原始格式。因此,我正在尋找一種方法來查找打開的壓縮包中使用的壓縮方法,以相同的壓縮率打開新壓縮方法。tarfile:確定打開壓縮包的壓縮
AFAICS TarFile
類不提供任何公共接口來直接獲取所需的信息。我想避免獨立於tarfile模塊讀取文件。
我目前正在考慮查找基礎文件對象(t.fileobj.__class__
)的類或試圖以所有可能的模式打開輸入文件,並根據哪個模式成功選擇正確的格式。
我正在開發一個Python腳本,該腳本應該處理一個tarball並輸出新腳本,並嘗試保留原始格式。因此,我正在尋找一種方法來查找打開的壓縮包中使用的壓縮方法,以相同的壓縮率打開新壓縮方法。tarfile:確定打開壓縮包的壓縮
AFAICS TarFile
類不提供任何公共接口來直接獲取所需的信息。我想避免獨立於tarfile模塊讀取文件。
我目前正在考慮查找基礎文件對象(t.fileobj.__class__
)的類或試圖以所有可能的模式打開輸入文件,並根據哪個模式成功選擇正確的格式。
好吧,我找到了一個更好的解決方案。
f = t.fileobj.__class__(newfn, 'w')
tar不壓縮,它連接(這就是爲什麼TarFile不會告訴你使用什麼壓縮方法,因爲沒有一個)。
你想知道它是tar.gz,tar.bz2還是tar.Z?
當您打開tarfile時,您可以選擇模式。來自docs:
如果模式不適合打開某個(壓縮)文件進行讀取,則會引發ReadError。
那麼爲什麼不嘗試打開文件作爲.gz
,.bz2
等,每次捕獲異常?打開時沒有異常的告訴你想要複製的壓縮類型。