Smartsheet 数据跟踪器:AttributeError: 'dict' 对象没有 'append' 属性

1 投票
2 回答
7553 浏览
提问于 2025-04-18 02:22

我刚开始学习Python,现在正在用Smartsheet数据跟踪器从CSV文件更新一个表格。

我在Python中管理数组列表时遇到了一些问题;我不太明白这个错误,我在StackOverflow上查了这个错误,但还是不太理解:

错误信息:

"File "C:\Users\David\DataTraker\connectors\CSVCon.py", line 61, in __init__     
    self.csvData.append(readerRow)
AttributeError: 'dict' object has no attribute 'append'"

这是我的代码:

def __init__(self, sourceConfig):
    self.csvData = []


    self.csvData = {"sourceId": "siniestros",
                    "connectorClassName": "CSVCon",
                    "fileName": "siniestros.csv",
                    "isStrict": False}

    for readerRow in sourceReader:
        self.csvData.append(readerRow)

2 个回答

1

其实,这个问题主要是因为在数据跟踪器项目中的代码注释写得不够清楚,导致了大家的困惑,特别是在CSVCon.py这个文件里。文件中的注释提到的CSV配置设置,其实是应该放在settings/sources.json文件里的一个例子。

项目文档中的配置源部分提供了更多关于如何在sources.json文件中设置源的信息。

还有一个专门的部分,详细解释了CSV源的相关内容。

那些让人困惑的注释已经更新得更清晰了。

2

出问题的地方在于,你创建了一个 list(列表),想要在后面往里面添加内容。但是之后你用一个字典覆盖了这个列表,而字典是不能添加内容的。这就是你为什么会遇到 AttributeError(属性错误)的原因。


要解决这个问题,我建议你把你在列表之后创建的字典(self.csvData={stuff})改个名字,比如可以叫 self.meta。另外,你也可以把你的 list 改个名字。

这两种方法都可以,关键是要消除名字冲突,这样这两个变量才能在同一个命名空间里共存。

撰写回答