使用python3中的tarfile模块从tar中提取文本文件
在Python3.4或更高版本中,有没有一种简单的方法可以从使用python3中的tarfile模块从tar中提取文本文件,python,python-3.x,file-io,stream,extract,Python,Python 3.x,File Io,Stream,Extract,在Python3.4或更高版本中,有没有一种简单的方法可以从tar文件中提取文本文件作为文本I/O的文件对象 我正在将python2代码修改为python3,我发现TarFile.extractfile,它曾经返回一个带有文本I/O的文件对象,现在返回一个io.BufferedReader对象,它似乎有二进制I/O。我代码的另一部分需要一个文本I/O,我需要以某种方式吸收这一变化 我能想到的一种方法是使用TarFile.extract并将文件写入目录,然后通过open函数打开它,但我想知道是否有
tar
文件中提取文本文件作为文本I/O的文件对象
我正在将python2代码修改为python3,我发现TarFile.extractfile
,它曾经返回一个带有文本I/O的文件对象,现在返回一个io.BufferedReader
对象,它似乎有二进制I/O。我代码的另一部分需要一个文本I/O,我需要以某种方式吸收这一变化
我能想到的一种方法是使用TarFile.extract
并将文件写入目录,然后通过open
函数打开它,但我想知道是否有办法直接获取文本I/O流 您可以使用getmembers()
之后,可以使用extractfile()将成员提取为file对象。只是一个例子
尝试
io.TextIOWrapper
包装io.BufferedReader
谢谢<代码>内容是二进制的。我的问题是如何获得文本I/O。
import tarfile
tar = tarfile.open("test.tar")
tar.getmembers()
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()