描述:多个文件,文件名名包含美国风格的日期( MM-DD-YYYY),需要将它们改名为欧洲风格的日期( DD-MM-YYYY)

代码1:先创建100个文件名为美国风格日期的文件(文件路径为项目当前路径下)

 #!/usr/bin/python
# -*- coding: UTF-8 -*-
#先创建一百个文件名为美国风格日期的文件
import os,random
for num in range(100):
mm=random.randint(1,12)
dd=random.randint(1,31)
yy=random.randint(1900,2099)
#str.format(),字符串格式化的功能,通过 {} 和 : 来代替以前的 %
#{:0>2d}:数字补0 (填充左边, 宽度为2)
#参考网址:https://www.runoob.com/python/att-string-format.html
date='{:0>2d}-{:0>2d}-{}'.format(mm,dd,yy)
#os.getcwd() 方法用于返回当前工作目录
#在当前目录下创建一个USdate路径
filePath=os.getcwd()+'\\US\\'
if not os.path.exists(filePath):
os.mkdir(filePath)
#定义文件名
fileName='file'+'{:0>3d}'.format(num+1)+'-'+date+'-###'+'.txt'
#连接文件路径和文件名
fileNameAndPath=filePath+fileName
# 根据文件名字符串创建文件
file=open(fileNameAndPath,'w')
file.write('Empty!')
print '%s is created' %fileNameAndPath
file.close()
print 'Done'

运行结果:

代码2:复制US文件夹下所有文件到EU文件夹下(文件路径为项目当前路径下),并重命名所有文件

注意:若要重复执行此脚本,需先删除第一次执行此脚本时创建的EU文件夹,否则会报错:WindowsError: [Error 183]

 #!/usr/bin/python
# -*- coding: UTF-8 -*-
#在执行此文件前需先执行create100File.py来创建100个文件
#若此脚本需重复执行,需先删除第一次执行此脚本时创建的EUdate文件夹,否则会报错:WindowsError: [Error 183]
#文件名包含美国风格的日期( MM-DD-YYYY),
# 需要将它们改名为欧洲风格的日期( DD-MM-YYYY)
import os,shutil,re
#创建一个识别美国日期的正则表达式
# . :默认匹配除\n之外的任意一个字符
# * :匹配*号前的字符0次或多次
# ?:匹配前一个字符1次或0次
# .*? :合起来可表达任意个字符
# re.VERBOSE:表示在正则表达式字符串中允许空白字符和注释
#参考网址:https://www.cnblogs.com/zj-luxj/p/6901048.html
datePattern=re.compile(
r"""
^(.*?) #日期前面的任意字符 group1
((0|1)?\d)- #月份:以0或者1开头的两位正整数 group2、3
((0|1|2|3)?\d)- #日期:以0或1或2或3开头的两位正整数 group4、5
((19|20)\d\d) #年份:以19或20开头的四位正整数 group6、7
(.*?)$ #日期后面的任意字符 group8
""",re.VERBOSE
)
#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表
for oldFileName in os.listdir('.\US'):
# mo=datePattern.search(amerFileName) #与下面一行代码实现的作用相同
#re.search 扫描整个字符串并返回第一个成功的匹配
date=re.search(datePattern,oldFileName)
#group():https://blog.csdn.net/weixin_43774516/article/details/88364761
beforePart=date.group(1)
monthPart=date.group(2)
dayPart=date.group(4)
yearPart=date.group(6)
afterPart=date.group(8)
#构成新文件名
newFileName=beforePart+dayPart+'-'+monthPart+'-'+yearPart+afterPart
#将USdate文件下所有文件复制到新创建的EUdate文件夹下并重命名
#os.path.abspath():返回path规范化的绝对路径
oldDir=os.path.abspath('.')+'\\US\\'
newDir=os.path.abspath('.')+'\\EU\\'
if not os.path.exists(newDir):
os.mkdir(newDir)
#shutil.copy():将第一个参数的路径下的文件复制到第二个参数的路径下
shutil.copy(oldDir+oldFileName,newDir)
#os.rename():重命名函数,第一个参数为旧文件名,第二个为新文件名
os.rename(newDir+oldFileName,newDir+newFileName)
print oldFileName,'已重命名为:',newFileName
print 'Done!'

运行结果:

python实践项目九:操作文件-修改文件名的更多相关文章

  1. python第二十九课——文件读写(复制文件)

    自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest): #1.打开两个文件:1个关联读操作,1个关联写操作 fr=open(src,'rb ...

  2. python第二十九课——文件读写(读取读取中文字符)

    演示:读取中文字符 结论: 1).如果不设置encoding,默认使用gbk进行编解码 2).如果编码和解码不一致,最终导致报错,但是一旦设置了errors='ingore',那么就不会报错,而采取乱 ...

  3. python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件

    描述:将指定路径下的某文件夹备份到一个zip文件 代码: #!/usr/bin/python # -*- coding: UTF-8 -*- # backupToZip - Copies an ent ...

  4. python中OS模块操作文件和目录

    在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...

  5. Python实践练习:将一个文件夹备份到一个 ZIP 文件

    题目 项目要求:假定你正在做一个项目,它的文件保存在 C:\AlsPythonBook 文件夹中.你担心工作会丢失, 所以希望为整个文件夹创建一个 ZIP 文件, 作为"快照" . ...

  6. python实践项目1

    python #南昌理工学院人工智能学院实验室 WORKSHOP 实践项目 import time print('welcome to our WORKSHOP') print('.......... ...

  7. Python实践项目2

    #南昌理工学院人工智能学院实验室WORKSHOP实践项目 import time import random SCRIPT_NPC_SCHOOL_SISTER = ['你好!', '你好!', '你是 ...

  8. python实践项目八:生成随机试卷文件

    描述:匹配美国50个州的首府. 下面是程序需要完成的任务: • 创建35 份不同的测验试卷. • 为每份试卷创建50 个多重选择题,次序随机. • 为每个问题提供一个正确答案和3 个随机的错误答案,次 ...

  9. python第二十九课——文件读写(写数据的操作)

    演示写数据的操作: 结论:往文件中写入数据,如果文件不存在,先创建文件,再写入内容 #1.打开文件 fw=open(r'd.txt','w',encoding='utf-8') #2.写数据操作 fw ...

随机推荐

  1. web自动化测试-selenium的三种等待

    一.等待的作用 1.在系统的功能运行过程中,所有的内容是需要一定的时间来实现展示, 2.时间耗费长短与网络速度.系统框架设定.接口的执行复杂度有关, 3.因此需要设置缓冲时间,若未设置缓冲时间,容易导 ...

  2. JS获取本周、本季度、本月、上月、本年的开始日期、结束日期

    /** * 获取本周.本季度.本月.上月的开始日期.结束日期 */ var now = new Date(); //当前日期  var nowDayOfWeek = now.getDay(); //今 ...

  3. S1_搭建分布式OpenStack集群_12 界面horizon安装

    一.界面的安装控制节点安装软件包:# yum install openstack-dashboard -y 修改配置文件:# vim /etc/openstack-dashboard/local_se ...

  4. cyyz: Day 2 线段树知识整理

    Day 2 上午的听课,哎~昏昏欲睡好吧.. 一.扫描线 知识点: 由于多边形千变万化,要想填充多边形内部的所有像素,需要找到一种合适的规则,能够沿着一个方向,一个像素不漏地把多边形内部填满,同时不污 ...

  5. CF1221G Graph And Numbers(折半搜索+图论)

    答案=总数-无0-无1-无2+无01+无02+无12-无012 直接详细讲无0和无2 无0为 01和11,无2为01和00,显然二者方案数相同,以下考虑无0 考虑折半搜索,后半段搜索,二进制点权0的位 ...

  6. C++2.0新特性(八)——<Smart Pointer(智能指针)之unique_ptr>

    一.概念介绍 unique_ptr它是一种在异常发生时可帮助避免资源泄露的smart pointer,实现了独占式拥有的概念,意味着它可确保一个对象和其他相应资源在同一时间只被一个pointer拥有, ...

  7. Python plot_surface(Axes3D)方法:绘制3D图形

    3D 图形需要的数据与等高线图基本相同:X.Y 数据决定坐标点,Z 轴数据决定 X.Y 坐标点对应的高度.与等高线图使用等高线来代表高度不同,3D 图形将会以更直观的形式来表示高度. 为了绘制 3D ...

  8. The fileSyncDll.ps1 is not digitally signed. You cannot run this script on the current system.

    https://www.opentechguides.com/how-to/article/powershell/105/powershel-security-error.html Unblockin ...

  9. git,指南,操作

    助你开始使用 git 的简易指南,木有高深内容,;). Tweet 作者:罗杰·杜德勒 感谢:@tfnico, @fhd and Namics其他语言 english, deutsch, españo ...

  10. vooya --- a YUV player and a generic raw data player

    vooya是一个raw数据播放器,可播放yuv数据,兼容win.linex以及mac平台. 下载地址:https://www.offminor.de/(见最下面) ubuntu需要安装依赖: apt ...