2016-02-28 98 views
0

當我運行此:蟒蛇的ReadLine文件

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() 

我得到這個錯誤:

File "C:\Python27\importing world datacountriesfromNAD83 toWGS84.py", line 13, in for line in f.readlines() : MemoryError.

我已經下載了國家從http://geonames.nga.mil/gns/html/namefiles.html文件作爲整個國家文件數據集。

請幫我解決這個問題。

回答

2

readlines方法()對於大文件在內存中創建一個大的結構,你可以嘗試使用:由耶爾給出

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

答案是有幫助的,我想改善它。一個很好的方式來讀取一個文件或大文件

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

我喜歡用「有」,這確保文件將被正確關閉的語句。