题目
项目要求:上千个文本文件,文件名包含美国风格的日期( 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)dd) # 年
(.*?)$ # 后面的所有
""", 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)