我有一個'tafile',其中包含具有完整路徑'/ home/usr/path/to/file'的文件。當我將文件提取到curent文件夾時,它會遞歸地創建完整路徑。 有沒有一種方法可以僅使用基本名稱來提取文件。使用Python從僅使用基本名稱的tarfile提取文件
1
A
回答
1
使用TarFile.extractfile()
並將其寫入您選擇的文件。
0
您可以使用功能extractall
來滿足您的需求。根據the documentation: 將存檔中的所有成員提取到當前工作目錄或目錄路徑。
TarFile.extractall(path="my/path")
0
您可以通過黑客TarInfo
對象從Tarfile.getmembers()
得到改變arcnames
。然後,您可以使用Tarfile.extractall
以新名稱將成員編寫到您選擇的目的地。
例如,下面的函數將歸檔的任意部分樹中選擇成員,並在他們的基地名稱提取到一個目的地:
def extractTo(tar, dest, selector):
if type(selector) is str:
prefix = selector
selector = lambda m: m.name.startswith(prefix)
members = [m for m in tar.getmembers() if selector(m)]
for m in members:
m.name = os.path.basename(m.name)
tar.extractall(path = dest, members = members)
假設tar
爲代表的一些成員的存檔TarFile
實例一個utilities/misc
目錄,並且您想將這些成員摺疊到local/bin
目錄中。您可以這樣做:
extractTo(tar, 'local/bin', 'utilities/misc/')
請注意尾部/
上的目錄前綴。我們不想將misc
目錄添加到「local/bin」,而只是將其成員。
相關問題
- 1. 使用python從文本中提取城市名稱
- 2. 用python3中的tarfile模塊從tar中提取文本文件
- 3. 使用Python從名稱空間中使用Python提取數據
- 4. 從文本文件中使用REGEX在Python中提取變量名稱和值
- 5. 從Python使用Python提取文本
- 6. 提取文本使用python
- 7. 使用python從html中提取文本
- 8. 如何僅從路徑中提取文件/文件夾名稱?
- 9. 使用C#從文本文件中提取字段名稱和最大長度
- 10. 使用python中的tarfile lib獲取tar文件中的單個文件
- 11. 使用python從文本文件中提取行
- 12. 如何使用Python從多個.txt文件中提取文本?
- 13. 使用python從文本文件中提取數據列
- 14. 使用通用基本名稱繪製多個文件
- 15. 如何僅使用IMAP提取Python的電子郵件正文?
- 16. 解析SQL查詢文本以提取表使用的名稱
- 17. 如何使用PHP從長url中獲取基本名稱?
- 18. 獲取文件基本名稱
- 19. 用於提取文本文件名稱的正則表達式
- 20. 使用名稱提取字段的ID
- 21. 從Apache日誌中提取文件名和公用名用Python
- 22. 如何使用Shadowbox從網頁中僅提取文本?
- 23. 使用「索引」重命名批量(基本名稱)文件/文件夾
- 24. 如何僅使用Arelle的Python API從XBRL文件提取財務報表?
- 25. 如何使用Python獲取基於設備名稱的卷標
- 26. 使用Python tarfile模塊解壓縮tar.bz2文件
- 27. 使用Perl從文本文件中提取文本
- 28. MSBUild:使用基於原始文件的名稱複製文件
- 29. 如何使用Apache Ant從文件路徑中提取軟件包名稱?
- 30. 使用Python從word文檔中提取圖像和文本
這是一個解決方案,但我寧願重命名文件,而不是複製每一行。 – Parikshit 2011-05-27 08:32:42
你不禁要「複製每一行」,因爲這是如何提取的。 'shutil.copyfileobj'是一個方便的工具來完成自己的拷貝。 – 2011-05-27 09:23:28