用Python修改含有日期的文件名

问题:修要修改一些LOG FILE的名字,那些LOG FILE的文件名格式大概是 log-v0-20091012-daily-1a5019a0.csv 。需要修改红色的日期部分,把这个日期改小一点,例如改到20091001。

首先上程序:

import time, os, string, sys
ONE_DAY = (24 * 60 * 60)
if __name__ == "__main__":
    if len(sys.argv)<2:
        print "argv error, useage: python " + __file__ + " foldername int"
        sys.exit()
    if len(sys.argv)==2:
        intrday = 1
    else:
        intrday = int(sys.argv[2])
    folder = sys.argv[1]
    localtime = time.localtime()
    todate = str(localtime[0]) + str(localtime[1]) + str(localtime[2])
    targettime = time.localtime(time.time() - ONE_DAY*intrday)
    newdate = str(targettime[0]) + str(targettime[1]) + str(targettime[2])
    print folder
    for file in os.listdir(folder):
        newname = string.join(string.split(file, todate), newdate)
        os.rename(folder+file, folder+newname)

用的时候就是 $ python rename.py ./ 4 ;这个命令会把当前目录下面符合这个条件的文件名中的日期往前改4天,运行完了以后的文件名就是:log-v0-20091008-daily-1a5019a0.csv

如果还需要把文件的访问时间和修改时间也一并修改的话,那么只需要用os.utime(path, times)这个函数就好了,times是元组(Tuple),一般可以这样用:

time_for_utime = (time.time(), time.time())
os.utime(path, time_for_utime)