每次python运行时都有新的文件名

时间:2015-08-03 17:46:17

标签: python python-2.7

使用python 2.7 ..

我在下面使用将所有打印输出发送到名为output.log的文件。我怎么能在每次运行时将此发送到另一个文件...在bash中我们可以声明一个名为date或者某个变量的变量并拥有该文件名的那一部分...所以我怎样才能实现与python相同的?

所以我的问题是......

  1. 每次运行以下脚本时,我的文件都应该有一个命名约定output_date / time.log
  2. 另外,我如何删除具有输出_ *的文件命名约定的X天以前的文件.log。

    import sys
    f = open('output.log', 'w')
    sys.stdout = f
    print "test"
    f.close()
    

2 个答案:

答案 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)