1

我正在将 Python 2 程序转换为 Python 3,但我不确定要采取的方法。

程序从 STDIN 读取单个电子邮件,或者指定包含电子邮件的文件。然后程序解析电子邮件并对它们进行一些处理。

因此,我们需要处理电子邮件输入的原始数据,将其存储在磁盘上并对其进行 MD5 哈希处理。我们还需要处理电子邮件输入的文本,以便通过 Python 电子邮件解析器运行它并提取字段等。

对于 Python 3,我不清楚我们应该如何读取数据。我相信我们需要原始二进制数据才能对其进行 md5 处理,并能够将其写入磁盘。我知道我们还需要它以文本形式使用电子邮件库来解析它。Python 3 对 IO 处理和文本处理进行了重大更改,我看不到读取电子邮件原始数据以及以文本形式使用相同数据的“正确”方法。

谁能提供这方面的一般指导?

4

1 回答 1

2

一般指导是尽快将所有内容转换为 unicode 并保持这种状态,直到最后一分钟。

记住那str是旧的unicodebytes是旧的str

请参阅http://docs.python.org/dev/howto/unicode.html作为开始。

对于 Python 3,我不清楚我们应该如何读取数据。

指定encoding打开文件的时间,它会自动为您提供 unicode。如果你从 阅读stdin,你会得到 unicode。您可以从中读取stdin.buffer以获取二进制数据。

我相信我们需要原始二进制数据才能对其进行 md5

是的你是。encode当你需要散列它时。

并且还能够将其写入磁盘。

encoding在打开要写入的文件时指定,文件对象会为您编码。

我知道我们还需要它以文本形式使用电子邮件库来解析它。

是的,但是因为当你打开文件时它会被解码,这就是你所拥有的。


也就是说,这个问题对于 Stack Overflow 来说实在是太开放了。当您有特定问题/疑问时,请回来,我们会提供帮助。

于 2012-04-18T07:56:35.697 回答