Python&批量重命名文件、批量多层级修改文件后缀名

Python办公自动化集锦 https://www.jianshu.com/nb/49019927

项目背景

下载尚硅谷Python资料,发现视频文件名格式为:尚硅谷Python基础+课节编号,文件名太长,强迫症希望简洁明了,怎么办?对于130个文件,手动重命名不现实,很累!!! 想想还是Python批量操作文件比较方便!!!

原型图

图1.初始文件命名.jpg

代码参考

import os
path = 'D:\\181124\\尚硅谷_Python\\02-视频'
items = os.listdir(path)
os.chdir(path)
print(os.getcwd())
drop_str = '尚硅谷_Python基础_'
for name in items:
    print(name)
    new_name = ''.join(name.split(drop_str))
    os.rename(name, new_name)
print('-----------------------分界线------------------------')
items = os.listdir(path)
for name in items:
    print(name)

运行代码

图3.修改后的文件命名.jpg

场景:有时下载电影或者资料,文件名会自带其他商标或者平台标语,想要批量修改,手动修改很繁琐!……先前分享的代码逻辑不完善,现优化一下

  • 原文件包含'【itjc8.com】'想去掉


    初始文件.jpg

优化代码

import os ,os.path
def rename(file,keyword):
    ''' file: 文件路径    keyWord: 需要修改的文件中所包含的关键字 ''' 
    os.chdir(file)
    items = os.listdir(file)
    print(os.getcwd())
    for name in items :
        print(name)
        # 遍历所有文件
        if not os.path.isdir(name):
            if keyword in name :
                new_name = name.replace(keyword,'')
                os.renames(name,new_name)
        else:
            rename(file + '\\' + name, keyword)
            os.chdir('...')      
    print('-----------------------分界线------------------------')
    items = os.listdir(file)
    for name in items:
        print(name) 
rename('G:\\学习资料\\1234', '_【itjc8.com】')
运行结果.jpg

重名后文件展示

重名后文件展示.jpg

引导-批量修改多层目录下文件名的后缀名

场景 修改文件夹1目录下的文件后缀名,同时修改同文件夹1平级的多个文件后缀名,例如jpg、txt、Pdf、png等格式文件,全部更换成MP3格式的文件。

初始目录展示

初始目录展示.png

代码参考

import os

'''将file_dir目录下的old_type类型的文件改成new_type类型的文件'''
def file_rename(old_type,new_type,file_dir):
    old_files = find_file(old_type,file_dir)
    #遍历所有文件
    for old_file in old_files:
        '''获取文件名'''
        filename = os.path.splitext(old_file)[0] #文件名
        '''新文件名=文件名+新的后缀 拼接起来'''
        new_file = os.path.join(filename + new_type)
        '''重命名'''
        os.renames(old_file, new_file)
    # 打印出文件名 -20表示左对齐,宽度20    
    print( "%-20s ===> %20s" % (old_file, new_file))
    
'''找到某个类型的文件'''  
def find_file(file_type,file_dir):
    file_set = []
    for root ,dirs, files in os.walk(file_dir):
        for file in files:
            if os.path.splitext(file)[1] == file_type:
                file_set.append(os.path.join(root , file ))
    
    return file_set

file_dir = r"D:\文件后缀修改"
file_rename('.jpg', '.mp3', file_dir);
file_rename('.pdf', '.mp3', file_dir);
file_rename('.txt', '.mp3', file_dir);
file_rename('.png', '.mp3', file_dir);

执行代码 查看运行结果

执行代码 查看运行结果.png

全部成功替换成mp3格式文件.png

你可能感兴趣的:(Python&批量重命名文件、批量多层级修改文件后缀名)