1

Python 2 プログラムを Python 3 に変換していますが、取るべきアプローチがわかりません。

プログラムは、STDIN から単一の電子メールを読み取るか、電子メールを含むファイルが指定されます。次に、プログラムは電子メールを解析し、それらに対して何らかの処理を行います。

そのため、電子メール入力の生データを処理してディスクに保存し、MD5 ハッシュを実行する必要があります。また、Python メール パーサーを介して実行し、フィールドなどを抽出するために、メール入力のテキストを処理する必要があります。

Python 3 では、データをどのように読み取ればよいかわかりません。md5を実行し、ディスクに書き込むには、生のバイナリデータが必要だと思います。電子メール ライブラリで解析できるようにするには、テキスト形式でも必要であることを理解しています。Python 3 では、IO 処理とテキスト処理が大幅に変更されました。メールの生データを読み取り、同じデータをテキスト形式で使用する「正しい」アプローチがわかりません。

誰でもこれに関する一般的なガイダンスを提供できますか?

4

1 に答える 1

2

一般的なガイダンスは、すべてをできるだけ早くユニコードに変換し、可能な限り最後までそのままにしておくことです。

strそれは古いものunicodeでありbytes、古いものであることを忘れないでくださいstr

まず、 http://docs.python.org/dev/howto/unicode.htmlを参照してください。

Python 3では、データをどのように読み取る必要があるのか​​がわかりません。

encodingファイルを開くときに指定すると、自動的にユニコードが表示されます。から読んstdinでいる場合は、ユニコードを取得します。から読み取り、stdin.bufferバイナリデータを取得できます。

md5を実行するには、生のバイナリデータが必要だと思います

そうです。encodeあなたがそれをハッシュする必要があるときそれ。

また、それをディスクに書き込めるようにします。

書き込み先のファイルを開くときに指定するencodingと、ファイルオブジェクトがファイルをエンコードします。

電子メールライブラリで解析できるようにするには、テキスト形式でも必要であることを理解しています。

はい、でもファイルを開くとデコードされるので、それができます。


とは言うものの、この質問はスタックオーバーフローにはあまりにもオープンエンドです。特定の問題/質問がある場合は、戻ってきてサポートします。

于 2012-04-18T07:56:35.697 に答える