这个程序将搜索指定文件夹中含有欧式日期的文件名,并将其改为美式日期
比如,将文件名为“saber12-24-2020saber”,改为“saber24-12-2020saber”
程序如下:
import re,shutil,os
#TODO:创建正则表达式
dataPattern=re.compile(r"""
(^(.*?))
(1?\d)
(-)
(\d\d)
(-)
(\d\d\d\d)
((.*?)$)
""",re.VERBOSE)
#TODO:找出工作目录的所有文件
os.chdir('C:\\Users\\zouch')
for amerFilename in os.listdir('C:\\Users\\zouch'):
mo=dataPattern.search(amerFilename)
#TODO:如果没有日期,则跳过
if mo==None:
continue#break语句是直接跳出循坏,但continue只是结束本次循坏
beforeDate=mo.group(1)
dateMonth=mo.group(2)
dateDay=mo.group(4)
dateYear=mo.group(6)
afterDate=mo.group(7)
#TODO:循坏遍历所有文件,检查是否包含日期
euroFilename=beforeDate+dateDay+'-'+dateMonth+'-'+dateYear+afterDate
#TODO:用shutil.move进行改名
shutil.move(amerFilename,euroFilename)
文件就从
我想了半天,还是不知道怎么改才可以,我估计是正则表达式那边出错了,但我就是不知道怎么改
当我把程序改成
import re,shutil,os
#TODO:创建正则表达式
dataPattern=re.compile(r"""
(1?\d)
(-)
(\d\d)
(-)
(\d\d\d\d)
""",re.VERBOSE)
#TODO:找出工作目录的所有文件
os.chdir('C:\\Users\\zouch')
for amerFilename in os.listdir('C:\\Users\\zouch'):
mo=dataPattern.search(amerFilename)
#TODO:如果没有日期,则跳过
if mo==None:
continue#break语句是直接跳出循坏,但continue只是结束本次循坏
dateMonth=mo.group(1)
dateDay=mo.group(3)
dateYear=mo.group(5)
#TODO:循坏遍历所有文件,检查是否包含日期
euroFilename=dateDay+'-'+dateMonth+'-'+dateYear
#TODO:用shutil.move进行改名
shutil.move(amerFilename,euroFilename)
并将文件名直接改成欧式日期,程序就可以完美运行
我想请教一下,程序应该怎么改才可以
import re
from datetime import datetime
string = "saber12-24-2020saber"
# 定义一个正则对象
m = re.compile(r"\d{2}-\d{2}-\d{4}")
# 查找并获取string中日期字符串
src = m.search(string).group()
# 将日期字符串转换为日期类型
src_date = datetime.strptime(src, "%m-%d-%Y")
# 将日期类型转换为字符串类型
result_date = datetime.strftime(src_date, "%d-%m-%Y")
# 将原字符串中的日期部分,替换为变换后的日期格式
print(string.replace(src, result_date))
把我这部分代码嵌入到你的代码中