我遇到从我的python代码向用户发送日志文件的问题。这是我在python代码结束时所做的事情:
os.system("mail -s 'logfile.log' -r sc44@ntp.com $USER@ntp.com < logfile.log")
但是,当我运行脚本时,我收到以下消息:
Null message body; hope that's ok
我收到一封空身的电子邮件。看起来我在代码结束时运行os.system
调用之前没有生成日志文件。
我已经对此进行了一些研究并查看了日志记录模块和子进程调用,但我发现os.system
方法更容易,因为它只是一个单行程序。任何帮助都将受到高度赞赏。
以下是我如何生成日志文件的代码
try:
os.remove("logfile.log")
except OSError:
pass
class Logger(object):
def __init__(self):
self.terminal = sys.stdout
self.log = open("logfile.log", "a")
def write(self, message):
self.terminal.write(message)
self.log.write(message)
sys.stdout = Logger()
当我尝试使用子进程时,它会在最后无限期地等待,我必须终止进程。我杀了它时收到以下错误消息:
^C (Interrupt -- one more to kill letter)
Traceback (most recent call last):
File "./test.py", line 224, in <module>
subprocess.call(["mail","-s 'log attached'","-r sc44@ntp.com","-a logfile.log","sc44@ntp.com"])
File "/tools/python/Python-2.6.3/lib/python2.6/subprocess.py", line 470, in call return Popen(*popenargs, **kwargs).wait() File "/tools/python/Python-2.6.3/lib/python2.6/subprocess.py", line 1157, in wait
pid, sts = os.waitpid(self.pid, 0)
KeyboardInterrupt
我正在使用python 2.6.3