python短时间内大批量修改文件?讲真,这很快活!
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python短时间内大批量修改文件?讲真,这很快活!,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5487字,纯文字阅读大概需要8分钟。
内容图文
![python短时间内大批量修改文件?讲真,这很快活!](/upload/InfoBanner/zyjiaocheng/600/089649d693cd431aa6ea2653ae6c17d7.jpg)
安老师最近在工作中遇到一件重复繁琐的小任务。这个任务需要修改几百个Word文件的文件名,而且都有固定的格式。我按照以往的习惯,不断地右键点击重命名,然后复制粘贴修改。
突然,我看到屏幕右下角出现了"贪玩某月",咦!他们能肆无忌惮地开挂,难道我就不能用python开挂吗?于是乎,我拿起手中的python屠龙刀,编程磨刀霍霍向"文件"... ...
通过实战积累了一些经验,下面我就开始为大家介绍如何在短时间内替换文件夹名和替换文件名以及替换文件中的内容。
大纲
1. os模块和open模块
2. 替换演示
1 替换文件夹名
2 替换文件名
3 替换文件内容
01
os模块和open模块
1. os模块
2. open模块
2.1 打开文件
2.2 文件的对象方法
2.3 关闭文件
使用close()方法即可关闭文件。若是C语言,安老师一定要强调关闭文件的重要性。但Python拥有垃圾收集机制,会在文件对象的引用计数降至零的时候自动关闭文件,故在python里忘记关闭文件不会造成内存泄露这么危险的结果。为了避免python因断电之类的事故丢失缓存数据(尚未写入文件),我们要养成使用完文件后,立刻关闭的好习惯!
02
替换演示
1. 演示场景
本次默认Windows查找文件,演示的图片如下
1.1 替换文件夹和替换文件名
主目录:F:\python\演示\流浪地球计划
子目录:F:\python\演示\流浪地球计划\第X阶段任务
1.2 替换文件内容
主目录:F:\python\演示\流浪地球计划
子目录:F:\python\演示\流浪地球计划\总计划
2. 替换文件夹名
1import?os
2def?replaceDirName(rootDir,oldStr,newStr):
3????for?dirpath,dirNames,fileNames?in?os.walk(rootDir,topdown=True):
4????????for?dirName?in?dirNames:
5????????????if?oldStr?in?dirName:
6????????????????dirNameOld?=?os.path.join(dirpath,dirName)
7????????????????dirNameNew?=?os.path.join(dirpath,dirName.replace(oldStr,newStr))
8????????????????print(dirNameOld?+?'-->'?+?dirNameNew)
9????????????????os.rename(dirNameOld,dirNameNew)
10
11if?__name__?==?'__main__':
12????try:
13????????rootDir?=?r"F:\python\演示\流浪地球计划\\"
14????????oldStr?=?"第X阶段"
15????????newStr?=?"第一阶段"
16????????replaceDirName(rootDir,oldStr,newStr)
17????????pass
18????except?Exception?as?e:
19????????print(e)2.? 替换文件名
2.1 重点代码详解
1)执行流
rootDir:根目录(即需要查找的目录)
oldStr:原字符串
newStr:新字符串
2)第3行 topdown:默认为True,则优先遍历top目录;若topdown为False,则优先遍历top的子目录。
3)第9行 os.rename 请见上方os模块详解。
2.2 重命名文件夹优缺点
优点:短时间内修改大批量具有相同字符串的文件夹名。
缺点:在实际场景中用的比较少。
2.3 执行演示
从最下面的子目录往上替换,如果从主目录往下替换,那就有意思啦,因为主目录变了,子目录的路径肯定也会变,也就无法进行重命名了!
3. 替换文件名
1import?os
2def?replaceFileName(rootDir,oldStr,newStr):
3????for?dirpath,dirNames,fileNames?in?os.walk(rootDir):
4????????for?fileName?in?fileNames:
5????????????if?oldStr?in?fileName:
6????????????????fileNameOld?=?os.path.join(dirpath,fileName)
7????????????????fileNameNew?=?os.path.join(dirpath,fileName.replace(oldStr,newStr))
8????????????????print(fileNameOld?+?'-->'?+?fileNameNew)
9????????????????os.rename(fileNameOld,fileNameNew)
10
11if?__name__?==?'__main__':
12????try:
13????????rootDir?=?r"F:\python\演示\流浪地球计划\\"
14????????oldStr?=?"第一阶段"
15????????newStr?=?"初始阶段"
16????????replaceFileName(rootDir,oldStr,newStr)
17????????pass
18????except?Exception?as?e:
19????????print(e)
3.1 重点代码详解
无
3.2 替换文件名优缺点
优点:在当前目录中,替换具有相同字符串的文件名非常高效。
缺点:若在非当前目录(子目录和文件可能较多),只要符合字符串,均会被替换。
3.3 执行演示
无论是当前目录还是子目录,符合字符串的文件名均会被新字符串替换。
4. 替换文件内容
1#?-*-?coding:?GB18030?-*-
2import?os
3def?replaceFileContent(rootDir,oldStr,newStr):
4????for?dirpath,dirNames,fileNames?in?os.walk(rootDir):
5????????for?fileName?in?fileNames:
6????????????fileObj?=?os.path.join(dirpath,fileName)
7????????????try:
8????????????????#f?=?open(fileObj,'r+',encoding='GB18030')
9????????????????f?=?open(fileObj,?'r+')
10????????????????allLines?=?f.readlines()
11????????????????f.seek(0)
12????????????????f.truncate()
13????????????????for?line?in?allLines:
14????????????????????f.write(line.replace(oldStr,newStr))
15????????????????f.close()
16????????????????print(fileObj?+'?由?'?+oldStr+'-->'+?newStr?+'?替换成功')
17????????????????pass
18????????????except?Exception?as?e:
19????????????????print(fileObj+'替换失败!')
20????????????????print('原因:',e)
21
22if?__name__?==?'__main__':
23????try:
24????????rootDir?=?r"F:\python\演示\流浪地球计划\\"
25????????oldStr?=?"2019"
26????????newStr?=?"2018"
27????????replaceFileContent(rootDir,oldStr,newStr)
28????????pass
29????except?Exception?as?e:
30????????print(e)
4.1 重点代码详解
1)第7行和第18行 尝试打开文件,若成功执行try剩下的部分,若不成功,则执行except处理异常。
2)第8行 encoding='GB18030',使用该方式可以打开文件,通过这种方式打开Word类文件不会报错,但文件会损坏,无法继续使用。
3)第9行 以"r+"模式,可读写方式打开。
4)第11行 f.seek(0) 代表指针在文件内容的起始位置。
5)第12行 f.truncate() 清空文件内容。
6)第14行 f.write(line.replace(oldStr,newStr)) 写入字符串,有对应的字符串就会被替换,如无对应的字符串就按照原样输出。
4.2 替换文件内容优缺点
优点:在实际工作环境替换已经确定的目标文件且是文本格式的文件非常有效。
缺点:若在非当前目录(子目录和文件可能较多),只要符合字符串,文件内容均被替换,可能会替换重要的数据,造成混乱甚至不可挽回的结果。
4.3 执行演示
一般Uedit和nodepad++能打开的文件都可以被成功替换,但是像Word、Excel、PPT就无法被替换,如果强行替换,反而会损坏文件。这三类文件都需要使用对应的工具才可以进行操作。
总结
python大批量修改文件,只要用在合适的场合上,就能为我们高效完成重复繁琐的工作!前提是我们要确认好这个替换的风险,是否能够快速回退!如果我们不考虑回退方案,有可能会造成很大的损失。比如,生产环境的oracle数据库软件目录不小心被替换了,这不就要gg了吗?内容总结
以上是互联网集市为您收集整理的python短时间内大批量修改文件?讲真,这很快活!全部内容,希望文章能够帮你解决python短时间内大批量修改文件?讲真,这很快活!所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。