为csv中的每一行创建新文件(麻烦迭代)

时间:2017-06-10 20:48:54

标签: python

您好我正在尝试使用python迭代csv文件中的每一行,并为每一行创建新的csv文件。所以我的思维过程是打开文件,循环遍历每一行,每行创建一个名为n_file.csv的文件(其中'n'是迭代),所以这是我的代码:

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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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))

答案 2 :(得分: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))