[英]Reading individual bz2 files from a tar file
我正在嘗試讀取tar文件中的許多bz2文件,該文件具有以下結構:
2013-01.tar
01\01\00\X.json.bz2\X.json
01\01\02\X.json.bz2\X.json
我可以按以下方式獲取文件名:
import tarfile
tar = tarfile.open(filepath, 'r')
tar_members_names = [filename for filename in tar.getnames()]
# Side question: How would I only return files and no directories?
它返回.bz2文件的列表。 現在,我嘗試使用以下方法(臨時)提取它們:
inner_filename = tar_members_names[0]
t_extract = tar.extractfile(inner_filename)
但是,以下提取json文件的代碼返回錯誤。 我將如何逐行檢索JSON文件?
import bz2
txt = bz2.BZ2File(t_extract)
TypeError: coercing to Unicode: need string or buffer, ExFileObject found
txt = bz2.decompress(t_extract)
TypeError: must be convertible to a buffer, not ExFileObject
我一直無法弄清楚如何從tar文件而不是當前的ExFileObject返回緩沖區(如何將其轉換為緩沖區?),任何建議都將不勝感激。
BZ2File
期望將文件名作為第一個參數,並且您傳遞一個文件對象 (即,具有與Python返回的open()
相同的API的對象)。
要執行所需的操作,您必須自己從t_extract
讀取所有字節,然后調用bz2.decompress(data)
或使用BZ2Decompressor
通過它流式傳輸數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.