发布时间:2019-09-08 09:10:08编辑:auto阅读(2070)
- 需求如下:用python写个发送mail的程序 。开启debug 。现在想将这个debug写进一个文件中,
- 代码如下 :
- stdout_ = sys.stdout
- sys.stdout = open("debug.txt","write")
- try:
- s = smtplib.SMTP()
- s.set_debuglevel(1)
- s.connect(mail_host)
- s.login(mail_user,mail_pass)
- s.sendmail(me,mailto_list,msg.as_string())
- s.close()
- print "send_mail success"
- return True
- except Exception,e:
- print maildebug
- print "send_mail false"
- return False
- sys.stdout = stdout_
但是实际上,debug的输出 仍然是输出在屏幕上的。
查看 smtplib 的源码,发现:
- from sys import stderr
- if self.debuglevel > 0:
- print>>stderr, 'connect:', (host, port)
包里直接 print>>stderr 使用这个语句,所以在外界无法使用 sys.stdout = open("debug.txt","write") 来重定向。
那么方法应该如下:
- s = smtplib.SMTP()
- s.set_debuglevel(1)
- smtplib.stderr=open("debug.txt","write")
- s.connect(mail_host)
- s.login(mail_user,mail_pass)
- s.sendmail(me,mailto_list,msg.as_string())
- s.close()
这样子就会把stderr 存进debug.txt 文件中
上一篇: python模拟选课系统
下一篇: python文件内容截取
49184
48339
39064
36179
30586
27384
26383
21212
21057
19397
190°
201°
310°
508°
346°
1032°
1036°
1019°
1018°
971°