python实践项目九:操作文件-修改文件名
描述:多个文件,文件名名包含美国风格的日期( 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实践项目九:操作文件-修改文件名的更多相关文章
- python第二十九课——文件读写(复制文件)
自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest): #1.打开两个文件:1个关联读操作,1个关联写操作 fr=open(src,'rb ...
- python第二十九课——文件读写(读取读取中文字符)
演示:读取中文字符 结论: 1).如果不设置encoding,默认使用gbk进行编解码 2).如果编码和解码不一致,最终导致报错,但是一旦设置了errors='ingore',那么就不会报错,而采取乱 ...
- python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件
描述:将指定路径下的某文件夹备份到一个zip文件 代码: #!/usr/bin/python # -*- coding: UTF-8 -*- # backupToZip - Copies an ent ...
- python中OS模块操作文件和目录
在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...
- Python实践练习:将一个文件夹备份到一个 ZIP 文件
题目 项目要求:假定你正在做一个项目,它的文件保存在 C:\AlsPythonBook 文件夹中.你担心工作会丢失, 所以希望为整个文件夹创建一个 ZIP 文件, 作为"快照" . ...
- python实践项目1
python #南昌理工学院人工智能学院实验室 WORKSHOP 实践项目 import time print('welcome to our WORKSHOP') print('.......... ...
- Python实践项目2
#南昌理工学院人工智能学院实验室WORKSHOP实践项目 import time import random SCRIPT_NPC_SCHOOL_SISTER = ['你好!', '你好!', '你是 ...
- python实践项目八:生成随机试卷文件
描述:匹配美国50个州的首府. 下面是程序需要完成的任务: • 创建35 份不同的测验试卷. • 为每份试卷创建50 个多重选择题,次序随机. • 为每个问题提供一个正确答案和3 个随机的错误答案,次 ...
- python第二十九课——文件读写(写数据的操作)
演示写数据的操作: 结论:往文件中写入数据,如果文件不存在,先创建文件,再写入内容 #1.打开文件 fw=open(r'd.txt','w',encoding='utf-8') #2.写数据操作 fw ...
随机推荐
- npm run build打包时修改的路径
- MySQL命令操作(Linux平台)
Linux shell 批量创建数据库/表 Shell 脚本如下: # create database and table HOST='localhost' PORT='3306' USER='roo ...
- B-树,B+树,B*树总结
链接地址:https://blog.csdn.net/v_JULY_v/article/details/6530142 B+树 B+ 树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一棵B+ ...
- JavaScript Array 對象
JavaScript array 對象 array對象,是用於在單個變量中存儲多個值的一種變量類型. 創建array對象的語法: new array(); new array(size); new a ...
- 24-ESP8266 SDK开发基础入门篇--Android TCP客户端.控制 Wi-Fi输出PWM的占空比,调节LED亮度
https://www.cnblogs.com/yangfengwu/p/11204436.html 刚才有人说需要点鸡汤.... 我想想哈;我还没问关于哪方面的鸡汤呢!!! 我所一直走的路线 第一: ...
- mysql sin() 函数
mysql> ); +---------------------+ | sin(PI()/) | +---------------------+ | 0.49999999999999994 | ...
- nginx reload和reopen
nginx被停止(nginx -s stop)或者直接杀掉了进程(kill -9 nginx的进程号)后,调用命令(nginx -s reload 或者 nginx -s reopen)会报错:无法找 ...
- es6学习2:变量的解构赋值
一:数组的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 let [foo, [[bar], baz]] = [1, [[2], 3]]; foo bar ba ...
- 汇编写的BASE64
汇编写的BASE64 unit Base64; { procedure TForm1.Button1Click(Sender: TObject); var Source, Dest: TStream; ...
- LDD3源码分析之poll分析
编译环境:Ubuntu 10.10 内核版本:2.6.32-38-generic-pae LDD3源码路径:examples/scull/pipe.c examples/scull/main.c 本 ...