2017-11-17 216 views
0

是否有一種簡單的方法可以從tar文件中提取文本文件作爲python 3.4或更高版本中的文本I/O的文件對象?用python3中的tarfile模塊從tar中提取文本文件

我修改我的python2代碼python3,我發現TarFile.extractfile,其中用於返回文本文件對象的I/O,現在返回一個io.BufferedReader對象似乎有開關量I/O。我的代碼的其他部分需要一個文本I/O,我需要以某種方式吸收這種變化。

我能想到的一種方法是使用TarFile.extract並將該文件寫入一個目錄,並通過open函數將其打開,但我想知道是否有辦法直接獲取文本I/O流。

回答

1

嘗試io.TextIOWrapper包裹io.BufferedReader

0

你可以使用getmembers()

import tarfile 
tar = tarfile.open("test.tar") 
tar.getmembers() 

之後,你可以使用extractfile()的成員提取物作爲文件對象。只是一個例子

import tarfile,os 
import sys 
os.chdir("/tmp/foo") 
tar = tarfile.open("test.tar") 
for member in tar.getmembers(): 
    f=tar.extractfile(member) 
    content=f.read() 
    // do operations with your content 
    sys.exit() 
tar.close() 
+0

謝謝。內容是二元的。我的問題是如何獲得文本I/O。 – norio