0

RSSフィードを介してGmailをチェックし、テキストを画面に出力するPythonスクリプトを一緒に作成しました。Python 2.6.6で動作しましたが、Python3.2.3で動作させることができませんでした。私はそれを変換するために2to3を使用しました。コードはここにあります:https://www.dropbox.com/s/b1277mi7vc7hv3f/gmailcheckparseconky.py3

この問題は、GetteEmailFeed関数で発生します。

使用すると恐ろしい" TypeError("expected bytes, not %s" % s.__class__.__name__)"エラーが発生します

b64auth = base64.encodestring("%s:%s" % (user, password))

しかし、私が使用するとき

string = bytes("%s:%s" % (user,password), 'utf-8')
string2=str(string,'utf-8')
b64auth = base64.encodestring( string)

私は得る

auth = "Basic " + b64auth
TypeError: Can't convert 'bytes' object to str implicitly

これにより、問題全体が完全に元に戻るようです。

パスワードをテキストとしてハードコーディングしようとしましたが、機能しません。urllib.error.HTTPError: HTTP Error 401: Unauthorized`auth =" Basic user:password "を設定する と、

私が言ったように、私は一緒にコードを石畳にしました。Gmailが承認するために何が必要かを完全には理解していません。その流れに沿って続けて、私はこのコードを修正するのを手伝って、私がしていることと同じ/類似したことをするウェブ上の別のスクリプトを指すのではなく、Pythonを学び、よりよく理解できるようにしたいと思います。

よろしくお願いします、ニック

4

1 に答える 1

0

Python3 以降、バイトと文字列は区別されます。このエラーは、これが( http://docs.python.org/py3k/library/base64.html#module-base64も参照)base64.encodestringの非推奨のエイリアスであるという事実から発生するため、バイトを指定する必要があります。バイトが返されます。encodebytes

あなたがしたいかもしれません:

string = bytes("%s:%s" % (user,password), 'utf-8')
b64bytes = base64.encodebytes(string)
b64auth = b64bytes.decode('ascii')

次に、b64auth は文字列になり、残りのコードで文字列として使用できるようになります。

于 2012-09-14T13:09:50.320 に答える