import os
import numpy as np
mydi =os.listdir('G:\\百度导航轨迹数据\\8-9文件处理')
mydi = mydi[1:]
for ifile in mydi:
inputdir = open('G:\\百度导航数据 起始点经纬度存储\\8-9经纬度新.txt','a')
f1 = open('G:\\百度导航轨迹数据\\8-9文件处理'+'\\' + ifile)
f2 = f1.readlines()
alist = []
for line in f2:
line = line.strip()
line = line.split(',')
alist.append(line)
a = np.array(alist)
[rows,cols] = a.shape
odlist = []
pre = 0
inputdir.write(a[0][4] + ',')
inputdir.write(a[0][5] + ',')
if rows > 1:
for i in range(1,rows,15):
j = i
if int(a[i][1]) - int(a[pre][1]) > 515:
while i > pre:
#注意这一步可能有偏差,所以在下面要加上条件。
if int(a[i][1]) - int(a[i-1][1]) > 500:
break
else:
i -= 1
if int(a[i][1]) - int(a[i-1][1]) > 400:
inputdir.write(a[i][4]+',')
inputdir.write(a[i][5]+',')
pre = j
if int(a[rows - 1][1]) - int(a[i][1]) > 500:
inputdir.write(a[rows-1][4] + ',')
inputdir.write(a[rows - 1][5] + ',')
inputdir.write('\n')
else:
inputdir.write('\n')
inputdir.close()
好绝望啊,导入的这个文件夹里总文件大小是2G多,应该不至于内存不够吧,每次都是内存占用很大然后就停止了。
有没有大佬看看怎样减小下内存的占用啊,感激不尽
文件过大时 不必一下把内容读取,你可以分批来读取并处理,read(size) tell(size) seek(size), 或 readline(n)
这种情况可以考虑“生成器”,下面对代码做了一点小改动(_**已注明**_),由于没有数据,无法保证百分百正确。先试一试吧
import os
import numpy as np
mydi =os.listdir('G:\\百度导航轨迹数据\\8-9文件处理')
mydi = mydi[1:]
#改动一
def readData(file):
'''创建一个生成器'''
while file.readline():
yield file.readline()
for ifile in mydi:
inputdir = open('G:\\百度导航数据 起始点经纬度存储\\8-9经纬度新.txt','a')
f1 = open('G:\\百度导航轨迹数据\\8-9文件处理'+'\\' + ifile)
#改动二
#f2 = f1.readlines()
#使用生成器
f2=readData(f1)
alist = []
for line in f2:
line = line.strip()
line = line.split(',')
alist.append(line)
a = np.array(alist)
[rows,cols] = a.shape
。。。省略。。。