我有一封通过 Pythonemail.parser
模块获得的电子邮件:
parser = email.parser.Parser()
msg1 = parser.parse(sys.stdin)
我想创建这个对象的副本,但我不确定如何最好地去做。我可以使用copy
模块...
msg2 = copy.deepcopy(msg1)
...但鉴于 MIME 消息可能包含一些任意的部分树,我不确定这是否是正确的解决方案。我可以序列化并重新解析消息...
msg2 = parser.parse(msg1.as_string())
...但是文档表明该as_string
方法可能并不总是正确的。我可以创建一个StringIO
对象并使用generator
...
buf = String()
g = email.generator.Generator(buf)
g.flatten(msg1)
msg2 = parser.parse(buf.getvalue())
...但是复制已经解析过一次的东西似乎需要做很多工作。
使用copy
模块似乎是最简单的解决方案,但我对copy
模块不熟悉。我在做正确的事吗?