python3模块需要数小时才能执行,csv-fi

2024-06-28 19:30:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的初学者,但对于我需要完成的任务来说,它似乎是一个很好的工具。你知道吗

这个脚本的目的是从一个相当大的csv文件(160万行8列)中清理/排序和挑选特定的数据集。你知道吗

我知道代码中的一些行不是很有效,但是脚本已经运行了20多个小时了。我在shell中没有收到任何错误代码,但我怀疑我已经超出了某种容量限制。你知道吗

要清楚的是,代码仍然在我的笔记本电脑上执行,8gbram和m3-6Y30处理器。你知道吗

我的代码真的很慢吗?或者在某个地方有无限循环吗?或者我犯了一些致命的错误吗?你知道吗

如果代码太慢没关系,我只是想知道是否应该关闭它,开始一个新的,因为它不工作。你知道吗

CG063是大的,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()

Tags: csv代码inforiflineitemrow