Python-写入CSV文件和for循环

Python-写入CSV文件和for循环,python,csv,for-loop,undefined-variable,Python,Csv,For Loop,Undefined Variable,编辑批准的答案是正确的,并且我的所有数据都显示在文件中,但是由于它正在循环并将每条信息写入新行,因此数据是无组织的,并以级联模式显示。在这一点上,这只是一个格式问题。有人遇到过类似问题吗? 我有一个for循环,在这个循环中我定义了多个变量。我需要将这些变量中的值打印到CSV,而无需反复写入行。我知道解决这个问题的方法是将“with open”语句放在for循环之外,但是python不再识别我的变量 我认为解决方案的另一部分是将数据附加到变量中,这样就可以在for循环之外调用它,但我不确定如何在我

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

我有一个for循环,在这个循环中我定义了多个变量。我需要将这些变量中的值打印到CSV,而无需反复写入行。我知道解决这个问题的方法是将“with open”语句放在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循环中定义的。

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:
        info  = inspect.getmembers(item)
        name = info[0]

        writer.writerow({'Item Name': name })
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 })

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

如果您将
一起使用,则不需要
csvFile.close()
。另外,
name
总是在循环中被重新定义,您是否尝试将所有
info[0]
添加到列表中?另外,您应该使用一个名为
list
的变量,因为python已经使用它来生成空列表。最后,
with
已经超出了
for
循环的范围,您得到了什么样的输出?是的,我需要将所有信息[0]写入csv。假设我打印“name”,然后运行此代码,我可以看到列表中每个项目的名称,但是当我将其写入csv时,我只能看到列表中最后一个项目的名称。