Python - 写入CSV文件和循环

时间:2017-08-04 18:26:36

标签: python csv for-loop undefined-variable

编辑批准的答案是正确的,我的所有数据都显示在文件中,但由于它循环并将每条信息写入新行,因此数据无组织并显示在级联模式。此时它只是一个格式化问题。有人遇到类似问题吗?

我有一个for循环,我在其中定义了多个变量。我需要将这些变量中的值打印到CSV,而不是一遍又一遍地写入行。我知道解决这个问题的方法是将"打开"在for循环之外的语句,但然后python不再识别我的变量。

我认为解决方案的另一部分是将数据附加到变量中,以便您可以在for循环之外调用它,但我不确定如何为我的情况执行此操作。

示例:

for item in my_list:

    info  = inspect.getmembers(item)
    name = info[0]

import csv

with open("sample.csv", "w") as csvFile:
    fieldnames = ['Item Name']
    writer = csv.DictWriter(csvFile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'Item Name': name })
csvFile.close()

在这个例子中,变量" name"无法定义,因为它是在for循环中定义的。

2 个答案:

答案 0 :(得分:6)

import csv
with open("sample.csv", "w") as csvFile:
    fieldnames = ['Item Name']
    writer = csv.DictWriter(csvFile, fieldnames=fieldnames)
    writer.writeheader()

    for item in list:
        info  = inspect.getmembers(item)
        name = info[0]

        writer.writerow({'Item Name': name })

答案 1 :(得分:1)

with放在循环之前,以便您可以在for循环中将值写入文件:

import csv
with open('sample.csv', 'w') as csvFile:
    fieldnames = ['Item Name']
    writer = csv.DictWriter(csvFile, fieldnames=fieldnames)
    writer.writeheader()

    for item in list:
        # get the data you want from item
        info  = inspect.getmembers(item)
        name = info[0]

        # write the data to the file
        writer.writerow({'Item Name': name })

注意(因为我没有足够的声誉来发表评论):Rohan的答案中找不到csvFile.close(),因为这是由with声明处理的。此外,根据PEP8,他应该使用2个空格而不是4个用于缩进。