1

从 gmail 检索文件以将其保存时,我收到以下错误消息:

Traceback (most recent call last):
  File "C:\a.py", line 32, in on_hello
    if getmail(self):
  File "C:\a.py", line 96, in getmail
    fp = open(att_path, 'wb')
IOError: [Errno 22] invalid mode ('wb') or filename: '.\\=?iso-8859-1?Q?CC_GM=5F
Est=E1vel.xlsx?='

现在,我怀疑这=?iso-8859-1?Q?CC_GM=5FEst=E1vel.xlsx?=是问题所在,如何将其转换为 ansii?我尝试使用各种 .decode 和 .encode 组合但没有成功。

谢谢

4

3 回答 3

3

您正在查看Quoted-printable编码(在 MIME 电子邮件标头中使用的变体,称为encoded-word)。该email.header模块为您处理:

>>> from email.header import decode_header
>>> for part in decode_header('=?iso-8859-1?Q?CC_GM=5FEst=E1vel.xlsx?='):
...     value = str(*part)
...     print(value)
...
CC GM_Estável.xlsx
于 2013-01-21T16:03:56.487 回答
1

这是一个 MIME 编码的电子邮件标头。

你应该*可以在这里使用一些东西,也许decode

http://docs.python.org/2/library/email.header.html

*我不经常写Python;你的旅费可能会改变。

于 2013-01-21T16:02:40.000 回答
0

首先,iso-8859-1 有许多 ansi 没有看到的字符。你确定你可以安全地忽略你处境中的所有这些角色吗?我更倾向于的另一个想法是 iso-8859-1,to(某种 Unicode 风格,即 utf8、utf16 等)。这是 [SO] 对您的问题的回答,它将进行转换2。干杯!

于 2013-01-21T16:09:52.017 回答