Python 将多个对象写入CSV

Python 将多个对象写入CSV,python,csv,Python,Csv,我从我的类中创建了多个对象,并希望将它们写入CSV文件中的一行 这是我的代码外观的一个示例 p1 = Person("name1", "first", 2.5, 0.5, 3.6) p2 = Person("name2", "second", 0.6, 5, 3) p3 = Person("name3", "third", 1, 0.5, 3.4) p4 = Person("name4", "fourth", 1.4, 0.3, 3.2) 因此,我希望一个人的所有信息都存储在CSV文件中,如下

我从我的类中创建了多个对象,并希望将它们写入CSV文件中的一行

这是我的代码外观的一个示例

p1 = Person("name1", "first", 2.5, 0.5, 3.6)
p2 = Person("name2", "second", 0.6, 5, 3)
p3 = Person("name3", "third", 1, 0.5, 3.4)
p4 = Person("name4", "fourth", 1.4, 0.3, 3.2)
因此,我希望一个人的所有信息都存储在CSV文件中,如下所示:

name1 first 2.5 0.5 3.6
name2 second 0.6 5 3
等等

我知道通常如何使用csv导入来编写csv,只是不需要这样的数据

人员类别:

class Person: 
    def __init__(self, name, number, score1, score2, score3):
        self.name = name 
        self.number = number
        self.score1 = score1
        self.score2 = score2
        self.score3 = score3

您可以使用
vars
dict
的形式获取实例的字段:

>>> Person("name1", "first", 2.5, 0.5, 3.6)
{'name': 'name1', 'first_name': 'first', 'a': 2.5, 'b': 0.5, 'c': 3.6}
这允许使用以可预测的方式写入列:

import csv

with open('names.csv', 'w', newline='') as csvfile:
    fieldnames = ['name', 'first_name', 'a', 'b', 'c']  # adjust this to your class' fields
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerow(vars(p1))
    writer.writerow(vars(p2))
    writer.writerow(vars(p3))
    writer.writerow(vars(p4))

Person()类的结构是什么?您需要提取类的相关属性,然后将每个属性写入CSV。您可以通过调用来获取实例属性的dict.\uuu dict\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!这就是我要找的。是否也可以只选择对象的某些元素,比如名称和一个分数,然后将其放入csv?Jimmy只需将它们从
字段名中排除,然后将
extraction='ignore'
传递到
csv.DictWriter
。有关详细信息,请参阅
DictWriter
的文档。