如何在python中用正则表达式批量修改文件名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中用正则表达式批量修改文件名相关的知识,希望对你有一定的参考价值。

import re
import 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中用正则表达式批量修改文件名的主要内容,如果未能解决你的问题,请参考以下文章

使用python批量修改文件名

dos命令能不能结合正则表达式来批量修改文件名?

端午安康SXYPython正则表达式进阶用法(以批量修改Markdown英文字体为例)

端午安康SXYPython正则表达式进阶用法(以批量修改Markdown英文字体为例)

端午安康SXYPython正则表达式进阶用法(以批量修改Markdown英文字体为例)

linux下怎么批量重命名这些文件