python-3.x - 使用 IMAPClient 在列表循环中的 for i 中的列表索引超出范围?
问题描述
我不确定我是否遗漏了一些明显的东西。我正在尝试检索电子邮件并对其进行迭代以查找文本中的特定项目。代码运行但在迭代所选文件夹中的项目的过程中会引发“列表索引超出范围”错误。当被迭代的列表是要使用的索引位置列表时,我不明白怎么会发生这种情况?
我正在使用 IMAPClient 包,我的脚本选择了正确的文件夹,并找到具有特定主题的电子邮件,然后返回一个列表
client.select_folder('WebsiteMessages', readonly=True)
result = client.search('SUBJECT "User Details"')
print(result)
这将返回文件夹中与搜索条件匹配的项目列表
[1, 2, 9, 10, 11, 15, 19, 22, 23, 24, 25, 26, 27, 28, 30, 32, 36, 46, 48, 49, 51, 55, 57, 60, 61]
如果我尝试遍历该列表,我会到达一个特定点,然后得到列表索引超出范围错误。
for i in result:
message = client.fetch(result[i], b'RFC822')
print(message)
我不明白当列表是由搜索生成时,错误是如何发生的?有任何想法吗?
解决方案
未经测试,只是猜测:
for i in result:
message = client.fetch(i, b'RFC822')
print(message)
i
已经是该值,将其用作该值的索引是不正确的。
第二种解决方案,这可能是您想要的:
for i in range(result):
message = client.fetch(result[i], b'RFC822')
print(message)
推荐阅读
- python - tf.python.ops 和 tensorflow.python.framework.ops 是什么关系?
- confluence-rest-api - 如何搜索标题以特定短语开头的页面?
- amazon-web-services - Kibana Snapshot restore .opendistro-alerting-config no permission to restore
- c# - 无法将用 C++ 编写的 Dll 导入 C# .NetCore
- android - 应用程序:compileDebugJavaWithJavac 错误。java.io.IOException:文件名、目录名或卷标语法不正确
- python - 如何使用 Telethon 加入 Telegram 中的多个频道?
- r - 如何使用 group_by 对所有不是字符/因素的变量求和?
- java - 休眠分离实体被传递以保持
- windows-subsystem-for-linux - 如何将 wsl 命令行参数添加到 Windows 终端配置?
- c++ - 'double' 和 'int' 类型的无效操作数到二进制 'operator%'