我正在尝试读取一个非常大的文本文件(.dat文件)-太大而无法完整打开-但我对整个内容(只是很小的一部分)不感兴趣。
真实的文本文件有32列,行数未知。我只对列nr 15中的值小于40且列21中的值在10 - 25之间的行感兴趣。有没有办法在python中打开和加载文件时指定这些约束,这样我就可以避免在我不关心的内容上浪费内存?
下面是一个示例:
假设我们有一个包含100个数据(25行4列)的文件,我们只想读取行(整行!)其中列NR2中的值小于40,并且列NR4中的值在10 - 25之间。如果不先加载完整的文件,我们如何做到这一点呢?
import numpy as np
# Create some examplary fake data for the text file:
textfile_content = np.random.randint(100, size=100).reshape(25,4)
print(textfile_content)
# Save text file:
np.savetxt('file.dat', textfile_content, fmt='%10.5e')
我能用谷歌搜索到的最接近的方法是:Reading specific lines only (Python)
但这并不能完全解决我的问题,因为这个人想提取完整的列,这些列是通过它们的列号而不是特定的数据值来预定义的。
https://stackoverflow.com/questions/50785017
复制相似问题