Kru*_*mar 20 python gzip file tar
我有一个25GB的文本文件.所以我把它压缩到tar.gz,它变成450 MB.现在我想从python中读取该文件并处理文本数据.对于这个我提到的问题.但在我的情况下代码不起作用.代码如下:
import tarfile
import numpy as np
tar = tarfile.open("filename.tar.gz", "r:gz")
for member in tar.getmembers():
f=tar.extractfile(member)
content = f.read()
Data = np.loadtxt(content)
Run Code Online (Sandbox Code Playgroud)
错误如下:
Traceback (most recent call last):
File "dataExtPlot.py", line 21, in <module>
content = f.read()
AttributeError: 'NoneType' object has no attribute 'read'
Run Code Online (Sandbox Code Playgroud)
还有,还有其他方法可以完成这项任务吗?
Ray*_*ger 27
该文件告诉我们,没有被返回extractfile()如果该成员是不是一个普通的文件或链接.
一种可能的解决方案是跳过None结果:
tar = tarfile.open("filename.tar.gz", "r:gz")
for member in tar.getmembers():
f = tar.extractfile(member)
if f is not None:
content = f.read()
Run Code Online (Sandbox Code Playgroud)
tarfile.extractfile()None如果成员既不是文件也不是链接,则可以返回。例如,您的 tar 存档可能包含目录或设备文件。修理:
import tarfile
import numpy as np
tar = tarfile.open("filename.tar.gz", "r:gz")
for member in tar.getmembers():
f = tar.extractfile(member)
if f:
content = f.read()
Data = np.loadtxt(content)
Run Code Online (Sandbox Code Playgroud)