我是python的初学者,但它似乎是我需要完成的任务的好工具。
该脚本的目的是清理/排序并从相当大的csv文件中挑选出特定的数据集(1,600万行和8列)。
据我所知,代码中的某些行效率不高,但脚本现在已经运行了20多个小时。我收到了shell中没有错误代码,但我怀疑我已经超过了某种容量限制。
要清楚,代码仍然在我的笔记本电脑,8 GB RAM和m3-6Y30处理器上执行。
我的代码是否真的很慢,或者某处有无限循环还是我做了一些致命的错误?
如果代码速度很慢,我只是想知道是否应该将其关闭并开始新的,因为它无法正常工作。
CG063_formatted是大的,MasterClean2是已经清理过的较小的。他们来自同一个来源。不幸的是,我无法向您展示文件的内容。
感谢所有帮助。
import csv
f1 = open('CG063_formatted.csv', "r")
f2 = open('MasterClean2.csv', "r")
f13 = open('Master_add.csv', "w")
csv_f1 = csv.reader(f1, delimiter=',')
csv_f2 = csv.reader(f2, delimiter=',')
csv_f13 = csv.writer(f13, lineterminator='\n')
Prov_param = ['LSP1_NV_BSFC', 'LSP1_NV_FlwFuel', 'LSP1_NV_PCAC', 'LSP1_NV_Pwr', 'LSP3_NV_BSFC', 'LSP3_NV_FlwFuel', 'LSP3_NV_PCAC', 'LSP3_NV_Pwr', 'LST2_NV_BSFC', 'LST2_NV_FlwFuel', 'LST2_NV_TrqEng']
Prov_param2 = ['6', '7', '8', '9', '11']
# ------ Clean / remove duplicate ------- #
DataList = []
for line in csv_f1:
if line in DataList or line[2] != '1':
continue
else:
DataList.append( line )
DataList2 = []
for line in DataList:
for row in csv_f2:
if line[1] == row[0]:
continue
else:
DataList2.append(line)
# ------ Main ------ #
DataList3 = []
for line in Datalist2:
for row in DataList3:
if line[1] == row[0]:
continue
else:
DataList3.append(list(range(56))) #create list with range 56 in DataList3
row[0] = line[1] #place LOPNUMMER in column 1 DataList3
for row in DataList3: #place 0 in all cells except column 1
for item in row:
if item != NULL:
item = '0'
for line in DataList2:
for row in DataList3:
if line[1] == row[0]: #LOPNUMMER@Datalist2 == LOPNUMMER@Datalist3 ?
k=1
for item in Prov_param2: #test type? 6,7,8,9,11?
k= k+11
if item == line[5]:
break
i=0
for item2 in Prov_param: #Which test parameter?
i=i+1
if item == line[4]:
break
row[i+k] = line[6] # write the test value to cell in DataList3
# ------ print to file -------- #
for row in csv_f2:
csv_f13.writerow(row)
for row in DataList3:
csv_f13.writerow(row)
# ------ Close / return value ------ #
f1.close()
f2.close()
f13.close()