2017-06-10 72 views
-1

嗨我想用python遍历csv文件中的每一行,并为每一行创建新的csv文件。所以,我的思维过程是打开文件,并遍历每一行和每一行创建一个名为n_file.csv(其中“n”是迭代)文件,所以这里是我的代码:为csv中的每一行创建新文件(麻烦迭代)

import csv 
csvfile = open('sample.csv','rb') 
csvFileArray = [] 


for row in csv.reader(csvfile, delimiter = '.'): 

csvFileArray.append(row) 
print(row) 
n = 0 
n += 1 

file = open(str(n) + "_file.csv", 'w+') 
file.write(str(row)) 

print(n) # returns 1 every time 

不幸的是,这不是迭代正确(因为它只创建一个名为1_file.csv的文件并每次覆盖它)。我怎样才能解决这个问题?

+3

解决您的缩进所以很明显的意图压痕是什么。 – paisanco

回答

0
for row in csv.reader(csvfile, delimiter='.'): 
    csvFileArray.append(row) 
    print(row) 

    n = 0 # << you do n=0 each loop!! 
    n += 1 

所以最好是

for idx, row in enumerate(csv.reader(csvfile, delimiter='.')): 
    csvFileArray.append(row) 
    print(row) 

    file = open(str(idx) + "_file.csv", 'w+') # enumerate do same as you want! 
    file.write(str(row)) 
0

您每次都将n设置为0,因为您在循环中声明了它。在for语句前声明它。

0

试试这个:

import csv 
with open('sample.csv','rb') as csvfile: 
    for i, row in enumerate(csv.reader(csvfile, delimiter = '.')): 
     with open("{}_file.csv".format(i), "w") as file: 
      file.write(str(row))