我正在尝试读取一个 gzip 文件(大小约为 150 MB)并使用此脚本(我知道它写得不好):
import gzip
f_name = 'file.gz'
a = []
with gzip.open(f_name, 'r') as infile:
for line in infile:
a.append(line.split(' '))
new_array1 = []
for l in a:
for i in l:
if i.startswith('/bin/movie/tribune'):
new_array1.append(l)
filtered = []
for q in range(0, len(new_array1)):
filtered.append(new_array1[q])
#at this point filtered array can be printed
问题是我能够使用这种技术将高达 50 MB 的文件读取到一个数组中,但是 80 MB 及以上的文件大小是不可读的。我正在使用的技术是否存在问题,或者是否存在内存限制?如果这是第二种情况,那么在 python 数组中读取大型 gz 文件(超过 100 MB)的最佳技术应该是什么?任何帮助将不胜感激。
注意:我没有使用 NumPy,因为我的服务器上的 C 编译器遇到了一些严重的问题,这些问题是 numpy 所必需的,因此我无法使用它。所以,请建议一些使用原生 Pythonic 方法(或 NumPy 以外的任何方法)的东西。谢谢。