在python子进程中更改输出日志文件名以使其唯一

时间:2015-03-13 18:30:01

标签: python subprocess

我正在使用python subprocess将日志文件发送给运行python脚本的用户。但是每次用户运行脚本时,日志文件都会被覆盖。这是我在python代码中使用的unix子进程命令:

subprocess.Popen("mail -s 'logfile.log attached' -r az12@abc.com -a logfile.log $USER@abc.com &> /dev/null",shell=True)

如何使日志文件名称唯一?也许增加logfile名称为logfile1.log,logfile2.log等等?

Trick是如何在子进程内实现的?

2 个答案:

答案 0 :(得分:3)

您也可以使用datetime模块执行此操作:

import datetime
filename = "logfile-%s.log" % datetime.datetime.today().isoformat()
command = "mail -s '{0} attached' -r az12@abc.com -a {0} $USER@abc.com &> /dev/null".format(filename)
subprocess.Popen(command, shell=True)

日志文件的名称将显示为logfile-2015-03-13T21:37:14.927095.log

答案 1 :(得分:1)

尝试使用timestamp生成日志文件名。关于在子进程中使用那个,命令只是一个字符串。所以它就像

一样简单
import time
fileName = "logfile." + str(time.time()) + ".log" # use your logic to generate logFile name.
command = "mail -s '%s attached' -r az12@abc.com -a %s $USER@abc.com &> /dev/null" %(fileName, fileName)
subprocess.Popen(command,shell=True)