Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python3中的tarfile模块从tar中提取文本文件_Python_Python 3.x_File Io_Stream_Extract - Fatal编程技术网

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

使用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函数打开它,但我想知道是否有

在Python3.4或更高版本中,有没有一种简单的方法可以从
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()