Pyhton项目实践:将带有美国风格日期的文件改名为欧洲风格日期

题目

项目要求:上千个文本文件,文件名包含美国风格的日期( MM-DD-YYYY),需要将它们改名为欧洲风格的日期( DD-MM-YYYY)

先写个创建一百个美国风格日期的文件

#! python
# 创建100个美国风格日期的文件

import os
import random

for i in range(100):
    mm = random.randint(1, 12)
    dd = random.randint(1, 30)
    yy = random.randint(2000, 2018)
    date = '{:0>2d}-{:0>2d}-{}'.format(mm, dd, yy)

    b = os.getcwd() + '\\USdate\\'
    if not os.path.exists(b):
        os.makedirs(b)
    creatname = b + date + '.txt'
    print(creatname)
    file = open(creatname, 'w')
    file.write('None')
    file.close()

print('OK')

代码

#! python3
# renameDates.py - Renames filenames with American MM-DD-YYYY date format
# to European DD-MM-YYYY.

import os
import shutil
import re

# 创建一个识别美国日期的正则,mm-dd-yy
datePattern = re.compile(r"""^(.*?)     # 前面的所有
                         ((0|1)?\d)-    # 月
                         ((0|1|2|3)?\d)-# 日
                         ((19|20)\d\d)  # 年
                         (.*?)$         # 后面的所有
""", re.VERBOSE)

for amerFilename in os.listdir('.\\USdate'):
    mo = datePattern.search(amerFilename)

    # Get the different parts of the filename.
    beforePart = mo.group(1)
    monthPart = mo.group(2)
    dayPart = mo.group(4)
    yearPart = mo.group(6)
    afterPart = mo.group(8)

    # 构成新文件
    euroFilename = beforePart + dayPart + '-' + monthPart + '-' + yearPart + afterPart

    # 复制到新文件夹
    absCopydir = os.path.abspath('.') + '\\USdate\\'
    absWorkdir = os.path.abspath('.') + '\\EUdate\\'
    if not os.path.exists(absWorkdir):
        os.makedirs(absWorkdir)
    shutil.copy(absCopydir + amerFilename, absWorkdir)
    os.rename(absWorkdir + amerFilename, absWorkdir + euroFilename)

posted @ 2018-05-10 22:15  乌冬味  阅读(439)  评论(0编辑  收藏  举报