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

每次运行python时都会有新的文件名,python,python-2.7,Python,Python 2.7,使用python 2.7 我使用下面的命令将所有打印输出发送到名为output.log的文件。如何让它每次运行时都发送到不同的文件…在bash中,我们可以声明一个名为date或其他变量,并拥有文件名的这一部分…那么如何使用python实现同样的效果呢 所以我的问题是 每次运行下面的脚本时,我的文件都应该有一个命名约定output_date/time.log 另外,我如何删除文件命名约定为output.*.log的早于X天的文件 import sys f = open('output.log',

使用python 2.7

我使用下面的命令将所有打印输出发送到名为output.log的文件。如何让它每次运行时都发送到不同的文件…在bash中,我们可以声明一个名为date或其他变量,并拥有文件名的这一部分…那么如何使用python实现同样的效果呢

所以我的问题是

  • 每次运行下面的脚本时,我的文件都应该有一个命名约定output_date/time.log
  • 另外,我如何删除文件命名约定为output.*.log的早于X天的文件

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

  • 由于个人对格式的偏好,这通常是我所做的

    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。

    获取日期/时间:

    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()
    删除它们。您可以在解析它们之后执行此操作

    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)
    
    lastTime=“2015-08-03\u 19:04:41”
    对于过滤器中的fn(os.path.isfile,os.listdir()):
    strtime=fn[fn.find(“”):fn.rfind(“.”)
    如果strtime
    查找
    时间
    日志
    模块。