在Python 3中,我正在尝试读取存储在tar.gz归档文件中的文件,而无需提取它们(即不将提取文件写入磁盘)。我找到了tarfile模块,并编写了以下代码(大大简化):
问题是,tar.extractfile(x) 返回的文件对象在调用read()方法时返回字节。我需要它使用utf-8编码返回字符串。
tar = tarfile.open('arhivename.tar.gz',encoding='utf-8')
for x in tar.getmembers():
filelikeobject=tar.extractfile(x)
#pass the filelikeobject to a third party function that accepts file-like object that read strings
#the following lines are for debug:
r=filelikeobject.read()
print(type(r).__name__) #prints out 'bytes' - need 'str'
问题是,tar.extractfile(x) 返回的文件对象在调用read()方法时返回字节。我需要它使用utf-8编码返回字符串。