如何在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()

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-20
使用re.sub可以批量修改文件名。
具体参考python re模块和文件的文档
相似回答