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 電子メール ヘッダーで使用されるエンコードされた単語と呼ばれるバリアント)を見ています。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 にない文字がいくつかあります。あなたの状況では、これらすべての文字を安全に無視できると確信していますか? 私がより傾向があるもう1つのアイデアは、iso-8859-1、to(Unicodeのフレーバー、つまりutf8、utf16など)です。これは、変換を行う [SO] からの質問に対する回答です2。乾杯!

于 2013-01-21T16:09:52.017 に答える