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 ...
随机推荐
- 如何在Windows上部署Redis集群和SpringBoot进行整合
一.安装Redis的Windows版本并进行配置 (1)下载链接 https://github.com/microsoftarchive/redis/releases (2)将下载后的Redis复制成 ...
- Java 内部类和Lambda
Java内部类 内部类又称为嵌套类,是在类中定义另外一个类.内部类可以处于方法内/外,内部类的成员变量/方法名可以和外部类的相同.内部类编译后会成为完全不同的两个类,分别为outer.class和ou ...
- L1731
生日蛋糕 输入的东西,一个是蛋糕的体积,一个是蛋糕的层数, 简言之,我觉得这个就是两个dfs的状态. 一旦越过这两个就得return ,同时这两个东西也参与进去了dfs. 至于题目, 第一个要求是层数 ...
- 2019.12.11 java方法(类似功能、函数)
方法的具体语法格式如下: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){ 执行语句 ……… return 返回值; } class D ...
- WinDbg常用命令系列---!htrace
!htrace 简介 !htrace扩展显示一个或多个句柄的堆栈跟踪信息. 使用形式 用户模式!htrace [Handle [Max_Traces]] !htrace -enable [Max_Tr ...
- 关于dword ptr 指令
dword 双字 就是四个字节ptr pointer缩写 即指针[]里的数据是一个地址值,这个地址指向一个双字型数据比如mov eax, dword ptr [12345678] 把内存地址12345 ...
- [CSP-S 2019]括号树
[CSP-S 2019]括号树 源代码: #include<cstdio> #include<cctype> #include<vector> inline int ...
- 洛谷P1577 切绳子题解
洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格 ...
- 洛谷 P1629 邮递员送信 题解
P1629 邮递员送信 题目描述 有一个邮递员要送东西,邮局在节点1.他总共要送N-1样东西,其目的地分别是2~N.由于这个城市的交通比较繁忙,因此所有的道路都是单行的,共有M条道路,通过每条道路需要 ...
- Programming a robot
题目链接:Gym - 101492H 自己的纯暴力做法: /* */ # include <iostream> # include <cstdio> # include < ...