我正在将Python2程序转换为Python3程序,但我不确定该采取什么方法。
该程序从STDIN读取单个电子邮件,或者指定包含电子邮件的文件。然后,该程序解析电子邮件并对其进行一些处理。
因此,我们需要处理电子邮件输入的原始数据,将其存储在磁盘上,并对其执行MD5哈希。我们还需要处理电子邮件输入的文本,以便通过Python电子邮件解析器运行它,并提取字段等。
在Python 3中,我不清楚我们应该如何读取数据。我相信我们需要原始的二进制数据,以便对其执行md5,并且能够将其写入磁盘。我知道我们还需要它的文本形式,以便能够与电子邮件库解析它。Python3已经对IO处理和文本处理进行了重大更改,我看不到“正确”的方法来读取电子邮件原始数据,同时也使用相同的文本形式的数据。
有没有人能对此提供一般性的指导?
发布于 2012-04-18 07:56:36
一般的指导方针是尽快将所有内容转换为unicode,并将其保持到最后一分钟。
请记住,str
是旧的unicode
,bytes
是旧的str
。
首先,请参阅http://docs.python.org/dev/howto/unicode.html。
在Python3中,我不清楚我们应该如何读取数据。
当您打开文件时指定encoding
,它将自动为您提供unicode。如果你从stdin
中读取,你会得到unicode。您可以从stdin.buffer
读取以获取二进制数据。
我相信我们需要原始的二进制数据才能对其进行md5
不,你需要。当你需要散列它的时候,encode
它。
,并且还能够将其写入磁盘。
在打开要写入该文件的文件时指定encoding
,文件对象会为您进行编码。
我知道我们还需要它的文本形式,以便能够用email库解析它。
是的,但因为当你打开文件时它会被解码,这就是你所拥有的。
也就是说,这个问题对于Stack Overflow来说真的太开放了。当您有特定的问题/问题时,请回来,我们将提供帮助。
https://stackoverflow.com/questions/10205132
复制相似问题