Python 用于追加文件名的AttributeError?

Python 用于追加文件名的AttributeError?,python,Python,很简单,真的。这里的代码抛出一个错误: def Send(subject, EEfrom, fromName, to, bodyHtml, bodyText, isTransactional, attachmentFiles = []): for name in attachmentFiles: attachments.append(('attachments'.name, open(name, 'rb'))) return ApiClient.Request('POST

很简单,真的。这里的代码抛出一个错误:

def Send(subject, EEfrom, fromName, to, bodyHtml, bodyText, isTransactional, attachmentFiles = []):
    for name in attachmentFiles:
    attachments.append(('attachments'.name, open(name, 'rb')))
    return ApiClient.Request('POST', '/email/send', {
            'subject': subject,
            'from': EEfrom,
            'fromName': fromName,
            'to': to,
            'bodyHtml': bodyHtml,
            'bodyText': bodyText,
            'isTransactional': isTransactional}, attachments)
在执行时,我看到:

 File "sendEmail.py", line 39, in Send
    attachments.append(('attachments'.name, open(name, 'rb')))
AttributeError: 'str' object has no attribute 'name'

我理解AttributeError告诉我的,但我不确定如何修复它。关于为什么我不知道如何修复这个问题,我的基本问题是因为我正在查看其他人的代码,这些代码运行不正常,我试图理解他们在一开始做了什么,但我不知道这部分的附加部分发生了什么,以及.name应该做什么,以及他们为什么要打开这个二进制文件进行读取。最终,它应该将一个文件附加到电子邮件中。

“附件”是字符串。附件是可变的。
请删除引号并重试。

出现这种情况是因为字符串没有
名称属性。在本例中,字符串
'attachments'
被视为不同的对象:

'attachments'.name ...
这可以通过使用适当的对象从中获取属性
name
来解决。在本例中,您似乎希望访问附件。名称,因此该行应为:

attachments.append((attachments.name, open(name, 'rb')))
for name in attachmentFiles:
    attachments.append(...)
此外,for
循环的
没有正确缩进,尽管这可能只是与在堆栈溢出时过帐的差异。循环应为:

attachments.append((attachments.name, open(name, 'rb')))
for name in attachmentFiles:
    attachments.append(...)

1-for循环中的代码未正确缩进。2-“whatever”.name将始终给出错误,因为“whatever”是字符串,而字符串字体具有.name属性。鉴于我不确定代码试图做什么,我没有进一步的方法来帮助你,我明确表示我不知道我在做什么。我确实看过文档中的列表和附录。不要粗鲁。删除引号只会引发另一个类似的错误:“AttributeError:'list'对象没有属性'name'”谢谢!但是,删除引号时出现另一个错误:“AttributeError:'list'对象没有属性'name'”