当我运行时:
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的国家/地区文件作为整个国家/地区文件数据集下载。
请帮我摆脱这个。
答案 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
我喜欢使用'确保文件正确关闭的声明。