我想提取一個壓縮文件夾,但不是直接使用.extractall()
,而是想將文件提取到流中,以便我可以自己處理該流。是否有可能使用tarfile
?或者有什麼建議嗎?python tar文件如何將文件提取到流中
回答
您可以使用.extractfile()
方法從tar文件中獲取每個文件作爲python file
對象。環比tarfile.TarFile()
實例來列出所有條目:
import tarfile
with tarfile.open(path) as tf:
for entry in tf: # list each entry one by one
fileobj = tf.extractfile(entry)
# fileobj is now an open file object. Use `.read()` to get the data.
# alternatively, loop over `fileobj` to read it line by line.
如果fileobj是一個gzip文件,是否可以解壓縮它? – Werner
@Werner:'tarfile'模塊爲您處理壓縮。參見['tarfile.open()'文檔](https://docs.python.org/2/library/tarfile.html#tarfile.open),默認模式是'r',它可以透明地檢測壓縮和處理根據需要進行減壓。 –
是的,但在tarfile裏面我有一個gzip文件(不幸的是有人用我的gzip文件創建了一個壓縮的tarfile文件...)。 'extractfile'返回一個'tarfile.ExFileObject',它不能用來打開gzip.GzipFile。有沒有辦法打開這個gzip文件而不解壓tarfile並打開新的系統文件? – Werner
我無法extractfile
,而網絡流tar文件,我做了這樣的事情,而不是:
from backports.lzma import LZMAFile
import tarfile
some_streamed_tar = LZMAFile(requests.get('http://some.com/some.tar.xz').content)
with tarfile.open(fileobj=some_streamed_tar) as tf:
tarfileobj.extractall(path="/tmp", members=None)
,並閱讀他們:
for fn in os.listdir("/tmp"):
with open(os.path.join(t, fn)) as f:
print(f.read())
python 2.7.13
- 1. 提取tar文件
- 2. perl tar文件提取
- 3. 在Ruby中,如何將tar歸檔流直接提取到文件系統?
- 4. Hwo提取ZIP文件到tar在postgresql
- 5. 如何在Perl中提取tar文件到目標目錄
- 6. 如何在提取tar文件時檢測文件權限?
- 7. 如何使用python 2.4提取tar文件?
- 8. 如何將文件夾放到帶有gradle的tar文件中
- 9. 將HTTPResponse讀取到tar文件
- 10. 將文件從一個tar文件添加到另一個python文件中
- 11. 如何從tar提取單個文件到不同的目錄?
- 12. 如何從終端中的tar文件中提取目錄中的文件?
- 13. 刪除從tar歸檔文件中提取的文件
- 14. 如何將文件追加到tar文件使用python tarfile模塊?
- 15. 提取.tar文件不起作用
- 16. 使用PHP + TAR提取文件夾
- 17. 用python3中的tarfile模塊從tar中提取文本文件
- 18. 如何查找tar文件中的文件行數而不提取
- 19. 如何從tar網站備份中提取單個文件
- 20. Python的tar文件大小
- 21. 的Python:在tar文件
- 22. 將空目錄添加到tar文件
- 23. 在Python中將文件添加到Tar中的空目錄
- 24. 提取tar文件:errno的:: ENAMETOOLONG:文件名過長@ rb_sysopen
- 25. 在一個tar文件中使用bash提取文件,但由多個tar文件組成
- 26. 使用tar提取一個tar文件-xzvf
- 27. 使用Python提取tar文件的最快方法
- 28. 如何將文件追加到Java中的.tar歸檔文件中?
- 29. 通過python將多個文件合併到一個tar文件中
- 30. 如何知道tar文件
你的意思是'tarfile'庫嗎? –
是的,抱歉的錯字錯誤 –