来自大文本文件的python readline

时间:2016-02-28 06:02:11

标签: python-2.7

当我运行时:

import os.path
import pyproj
srcProj = pyproj.Proj(proj='longlat', ellps='GRS80', datum='NAD83')
dstProj = pyproj.Proj(proj='longlat', ellps='WGS84', datum='WGS84')
f = file(os.path.join("DISTAL-data", "countries.txt"), "r")
heading = f.readline() # Ignore field names.
with open('C:\Python27\DISTAL-data\geonames_20160222\countries.txt', 'r') as f:         
  for line in f.readlines():
    parts = line.rstrip().split("|")
    featureName = parts[1]
    featureClass = parts[2]
    lat = float(parts[9])
    long = float(parts[10])
    if featureClass == "Populated Place":
      long,lat = pyproj.transform(srcProj, dstProj, long, lat)
  f.close()

我收到此错误:

  

文件" C:\ Python27 \导入世界数据从NAD83到WGS84.py",   第13行,f.readlines()中的for行:MemoryError。

我已将http://geonames.nga.mil/gns/html/namefiles.html的国家/地区文件作为整个国家/地区文件数据集下载。

请帮我摆脱这个。

2 个答案:

答案 0 :(得分:2)

大文件的readlines()在内存中创建一个大型结构,您可以尝试使用:

f = open('somefilename','r')
for line in f:
    dosomthing()

答案 1 :(得分:2)

Yael给出的答案很有帮助,我想改进它。读取文件或大文件的好方法

with open(filename) as f:
    for line in f:
        print f

我喜欢使用'确保文件正确关闭的声明。