创建包含许多列的w / python电子表格

时间:2019-12-04 19:20:35

标签: python architecture

我正在尝试将数据解析到电子表格中,以创建报告以将一些数据分发给我们的组织。我对python和编码还是很陌生,但是我在做什么似乎是错误的。一位同事提到我应该创建一些对象,并使用字典中的对象将其输出到csv。我当前的代码有点像这样。

#Create obj
obj(hostname, description, ..., status)

#Create csv
with open(<filepath>, 'w', newline='') as csvfile:
    #create the headers
    fieldnames = ['field1', 'field2', ..., 'field15']
    writer = csv.DictWriter(csvfile, fieldnames = fieldnames)
    writer.writeheader()
    for (id,obj) in dict.items():
        item = {'field1': obj.hostname, 'field2': obj.description, ..., 'field15':obj.status}
        #Add to the csv
        writer.writerow(item)

我的同事提到不是创建对象,而是声明该区域中的所有属性,而我可能想创建方法(?)来获取数据,从而使其更具可变性。这样的。

#Create obj
class obj:

    def __init__(self):
        self.hosts = set([])

    def addHost(self, hostname):
        self.hosts.add(hostname)

    def removeHost(self, hostname):
        self.hosts.remove(hostname)

    def setDescription(self, description):
        self.description = description

    def getDescription(self):
        return self.description

由于每个对象都有大量属性,因此在类声明下,此列表已经很长了。这就是让我怀疑这是否是错误的方法的原因。我没有受过任何培训,除了创建包含3行或更少行的电子表格外,我在网络上找不到任何东西。我已经基于这些示例编写了代码,但看起来笨拙又脆弱。

1 个答案:

答案 0 :(得分:-1)

我要说的是您同事的建议。这可能很乏味,尽管这就是为什么我们将大型类的代码分成自己的文件的原因。或类似类的文件。

如果您的主类和类位于同一目录中,则可以访问另一个文件中的类。

让您的代码成为您的main.py,并将类定义定义为ObjClass.py或类似名称。然后,只需在要运行的main.py文件顶部添加一个导入即可。

from ObjClass import obj
...
#Create obj
obj = obj(hostname, description, ..., status)

您可以通过将对象的__init__更改为以下方式来摆脱set方法:

class obj:

    def __init__(self, description=None, ...=None, status=None):
        self.hosts = set([])
        self.description = description
        self. ... = ...
        self.status = status

这将允许您在启动时定义参数,如果需要则可以在以后使用以下方式更改它们:

obj.description = description

而不是

obj.setDescription(description)