gpt4 book ai didi

python - 使用 windows python 2.3 传入 poplib 重构

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:13 24 4
gpt4 key购买 nike

大家好,你们能不能帮我重构一下,让它更符合 Python 风格。

import sys
import poplib
import string
import StringIO, rfc822
import datetime
import logging

def _dump_pop_emails(self):
self.logger.info("open pop account %s with username: %s" % (self.account[0], self.account[1]))
self.popinstance = poplib.POP3(self.account[0])
self.logger.info(self.popinstance.getwelcome())
self.popinstance.user(self.account[1])
self.popinstance.pass_(self.account[2])
try:
(numMsgs, totalSize) = self.popinstance.stat()
for thisNum in range(1, numMsgs+1):
(server_msg, body, octets) = self.popinstance.retr(thisNum)
text = string.join(body, '\n')
mesg = StringIO.StringIO(text)
msg = rfc822.Message(mesg)
name, email = msg.getaddr("From")
emailpath = str(self._emailpath + self._inboxfolder + "\\" + email + "_" + msg.getheader("Subject") + ".eml")
emailpath = self._replace_whitespace(emailpath)
file = open(emailpath,"wb")
file.write(text)
file.close()
self.popinstance.dele(thisNum)
finally:
self.logger.info(self.popinstance.quit())

def _replace_whitespace(self,name):
name = str(name)
return name.replace(" ", "_")

同样在 _replace_whitespace 方法中,我希望有某种清理例程来清除所有可能导致处理的非法字符。

基本上我想以标准方式将电子邮件写入收件箱目录。

我是不是做错了什么?

最佳答案

我没有发现该代码有任何重大错误 - 它的行为是否不正确,或者您只是在寻找通用的样式指南?

一些注意事项:

  1. 代替 logger.info ("foo %s %s"% (bar, baz)),使用 "foo %s %s", bar, baz .如果不打印消息,这可以避免字符串格式化的开销。
  2. 在打开 emailpath 时放置一个 try...finally
  3. 使用'\n'.join (body),而不是string.join (body, '\n')
  4. 代替msg.getaddr("From"),只是msg.From

关于python - 使用 windows python 2.3 传入 poplib 重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/224660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com