我有一个25 of的文本文件。所以我把它压缩成tar.gz,它变成了450 MB。现在,我想从python中读取该文件,并处理文本data.for,这是我所提到的问题。但在我的案例中代码不起作用。守则如下:
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)
错误如下:
Traceback (most recent call last):
File "dataExtPlot.py", line 21, in <module>
content = f.read()
AttributeError: 'NoneType' object has no attribute 'read'
另外,还有其他方法来完成这个任务吗?
发布于 2016-05-27 04:22:13
文档告诉我们,如果成员不是常规文件或链接,则提取文件()不会返回任何内容。
一个可能的解决方案是跳过无结果:
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()
发布于 2016-05-27 04:24:41
如果成员既不是文件也不是链接,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)
发布于 2016-05-27 04:36:37
你可以试试这个
t = tarfile.open("filename.gz", "r")
for filename in t.getnames():
try:
f = t.extractfile(filename)
Data = f.read()
print filename, ':', Data
except :
print 'ERROR: Did not find %s in tar archive' % filename
https://stackoverflow.com/questions/37474767
复制相似问题