如何用python从文中获取文件名再用正则表达式批量修改文件名
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何用python从文中获取文件名再用正则表达式批量修改文件名,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1963字,纯文字阅读大概需要3分钟。
内容图文
![如何用python从文中获取文件名再用正则表达式批量修改文件名](/upload/InfoBanner/zyjiaocheng/1171/5d671956a65d4eebb2867b328509c58a.jpg)
第零步:问题的提出
我在网上购买了星火英语的六级晨读美文100篇(六级早已高分飘过,不过很喜欢这些文章,买来重新品味),但是发现其文章的命名都为01.txt或10.txt等。为了便于检索需要修改文件名称。
第一步:从文件中取出文件名。
我发现txt文件的第一行为文件名,格式为如:Passage 3. Three Passions I Have Lived for, 后面还有几个换行符。写下如下代码进行第一步修改:
import os x = 1 while x < 101: if x < 10: file_name = "0"+str(x) + ".txt" #10一下则前面补零 file = open(file_name) else: file_name = str(x) + ".txt" file = open(file_name) line = file.readline() file.close() os.rename(file_name,line) #重命名 x = x + 1修改后文件名如下:
我发现这样也不好,因为文件名太长,移到window系统下出现错误;而且在linux下无法读取。所以我要把前面没有用的东西去掉只留下文章的名字。
第二步,修改文件名
代码如下:
import re import os import shutil import time dir = "/home/leo/Documents/starfire100_2/" #文件目录 if os.path.isdir(dir): #检验目录是否有误 print ("Directory exists!") else: print ("Directory not exist.") time.sleep(5) exit() filelist=[] filelist=os.listdir(dir) #print filelist for i in filelist: tt_match = re.search(r'Passage\s{1,2}\d{1,3}\.?\s(.*)\n$',i) #匹配文件名,返回括号内的文章名 if tt_match: NewFile = tt_match.group(1) #获取匹配名存为newfile NewFile=i.replace(i,NewFile) # 修改 shutil.move(dir+i,dir+NewFile) #执行修改
修改后运行
ls | grep 'Passage'还有如下条目:
去除最后一条属于目录所以还有三条未得到修改,不过数量不多,手动修改解决。
得到如下效果:
第四步:去除换行符replace空格
将上面的代码修改一下以后得到如下代码
import re import os import shutil import time #dir=raw_input("please input which Directory-Name to Rename:") dir = "/home/leo/Documents/starfire100_2/" if os.path.isdir(dir): print ("Directory exists!") else: print ("Directory not exist.") time.sleep(5) exit() filelist=[] filelist=os.listdir(dir) #print filelist for i in filelist: NewFile = i.strip('\n') #去除掉最后那个回车符 NewFile = re.sub(r'\s+','_',NewFile) #把所有的空格改为下划线 if NewFile[-1]=='_': #如果最后一个字符为下划线则去除 NewFile = NewFile[:-1] #去除最后一个下划线 shutil.move(dir+i,dir+NewFile)
得到如下效果,总算完成了
其实最后去除空格和回车符的代码可以加入修改文件名的代码之中,不过这个很容易就不修改了。
后续问题
我想我的解法一定不是最优的,因为只要找到第二个大写字母就可以匹配出来。如果您能告诉我如何实现或者您有更好的方法请多指教,谢谢!
参考博文
Python正则表达式指南
原文:http://blog.csdn.net/zl4546474849l/article/details/29365331
内容总结
以上是互联网集市为您收集整理的如何用python从文中获取文件名再用正则表达式批量修改文件名全部内容,希望文章能够帮你解决如何用python从文中获取文件名再用正则表达式批量修改文件名所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。