使用python3中的tarfile模块从tar中提取文本文件

时间:2017-11-17 22:43:51

标签: python python-3.x file-io stream extract

有没有一种简单的方法可以从tar文件中提取文本文件作为python 3.4或更高版本中文本I / O的文件对象?

我正在将python2代码修改为python3,我发现TarFile.extractfile用于返回带有文本I / O的文件对象,现在返回一个io.BufferedReader对象,它似乎有二进制I / O.我的代码的另一部分需要文本I / O,我需要以某种方式吸收这种变化。

我能想到的一种方法是使用TarFile.extract并将文件写入目录,然后通过open函数打开它,但我想知道是否有办法获取文本I / O直接流。

2 个答案:

答案 0 :(得分:1)

尝试io.TextIOWrapper打包io.BufferedReader

答案 1 :(得分: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()