如何在python中用正则表达式批量修改文件名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中用正则表达式批量修改文件名相关的知识,希望对你有一定的参考价值。
import reimport os
def get_file_list(folder):
file_list = [];
for root, dirs, files in os.walk(folder):
for f in files:
path=root+os.path.sep+f
file_list.append(path)
return file_list
def get_re_file_list(file_list,re_rule):
file_list_re=[]
for file in file_list:
if re.search(re_rule,file):
file_list_re.append(file)
return file_list_re
def rename2new_file_list(file_list_re,re_rule,new_str):
re_c = re.compile(re_rule)
new_file_list = []
for i in range(0,len(file_list)):
new_base_name=re_c.sub(new_str,file_list[i][file_list[i].rindex(os.sep):])
new_full_path=file_list_re[i][:file_list_re[i].rindex(os.sep))+os.sep+base_name
new_file_list.append (new_full_path)
return new_file_list
def rename2list(old_list,new_list):
for i in range(0,len(old_list)):
os.rename(old_list[i],new_list[i])
def main():
root=""
re_rule=""
new_str=""
old_file_list=get_file_list(root)
re_file_list=(old_file_list,re_rule)
new_file_list=rename2new_file_list(re_file_list,re_rule,new_str)
rename2list(re_file_list,new_file_list)
if __name__ == '__main__'
main() 参考技术A 使用re.sub可以批量修改文件名。
具体参考python re模块和文件的文档
python windows下批量修改文件名
经常会下载一些资料和学习视频,往往这些资料名称很多,想批量修改又很不方便,刚好用python写一个修改文件名的小程序。
windows下安装python这个就不多说了,直接下载安装程序安装即可。https://www.python.org/downloads/ 3.x 2.x 都可以
我这个程序,是利用正则表达式的方式,针对一些比较偏的文件名进行过滤修改。没有针对子目录修改,大家可以自己行加以利用修改。
rename-input.py
#!/usr/bin/env python #coding:utf-8 #create by shenfly231 #modify file name import sys,os,re def newName(oldstr,newstr): dirname = os.listdir() p=re.compile(oldstr) for item in dirname: os.rename(item,p.sub(newstr,item)) return 0; if __name__ == ‘__main__‘: oldtext = input("输入含正则表达式的字符串,特殊字符用\转义:") newtext = input("输入要更替换的字符串,要替换空,直接回车:") result = newName(oldtext,newtext) if result == 0: print(‘转换成功‘) else: print(‘转换出现问题‘) input("\n回车退出")
使用方法 :把程序文件拷到要修改的文件相同的目录下,双击程序,以python打开方式打开。
修改前: \d 表示数字,{1,2}表示取1-2位数字, 正则表达式参考一下就明白怎么写了。
修改后
本文出自 “生命不息 奋斗不止” 博客,请务必保留此出处http://shenfly231.blog.51cto.com/12811004/1915879
以上是关于如何在python中用正则表达式批量修改文件名的主要内容,如果未能解决你的问题,请参考以下文章
端午安康SXYPython正则表达式进阶用法(以批量修改Markdown英文字体为例)
端午安康SXYPython正则表达式进阶用法(以批量修改Markdown英文字体为例)