将多个对象写入CSV

时间:2019-02-28 14:54:04

标签: 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文件中,如下所示:

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

1 个答案:

答案 0 :(得分:1)

您可以使用dict将实例的字段作为vars

>>> Person("name1", "first", 2.5, 0.5, 3.6)
{'name': 'name1', 'first_name': 'first', 'a': 2.5, 'b': 0.5, 'c': 3.6}

这允许使用csv.DictWriter以可预测的方式写列:

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))