使用python 2.7 ..
我在下面使用将所有打印输出发送到名为output.log的文件。我怎么能在每次运行时将此发送到另一个文件...在bash中我们可以声明一个名为date或者某个变量的变量并拥有该文件名的那一部分...所以我怎样才能实现与python相同的?
所以我的问题是......
另外,我如何删除具有输出_ *的文件命名约定的X天以前的文件.log。
import sys
f = open('output.log', 'w')
sys.stdout = f
print "test"
f.close()
答案 0 :(得分:4)
有一些个人喜好的格式化这通常是我做的。
import time
moment=time.strftime("%Y-%b-%d__%H_%M_%S",time.localtime())
f = open('output'+moment+'.log', 'w')
就自动删除而言,您是否希望在测试运行时将其删除?
os.remove(fileStringName)
有效,你只需要进行算术和字符串转换。我会使用os.listdir(pathToDirWithOutputLogs)遍历文件名并对它们进行数学运算并在旧文件名上调用os.remove。
答案 1 :(得分:2)
获取日期/时间:
from time import gmtime, strftime
outputFileName = "output_#.log"
outputFileName = outputFileName.replace("#", strftime("%Y-%m-%d_%H:%M:%S", gmtime()))
对于数字递增:
outputFileName = "output #.log"
outputVersion = 1
while os.path.isfile(outputFileName.replace("#", str(outputVersion))):
outputVersion += 1
outputFileName = outputFileName.replace("#", str(outputVersion))
要删除早于某个日期的文件,您可以使用``遍历目录中的所有文件,并使用os.remove()
删除它们。解析后可以compare the file names。
lastTime = "2015-08-03_19:04:41"
for fn in filter(os.path.isfile, os.listdir()):
strtime = fn[fn.find("_"):fn.rfind(".")]
if strtime < lastTime:
os.remove(fn)