Python-批量修改文件名

2019-06-12  本文已影响0人  哼Bug

今天,女朋友问我批量修改文件名。要将一个文件夹下的很多文件的文件名中一些类似的字段去掉。
我就写了下,代码贴在下面。

完整代码:

import os,re

class ChangeFilename:
    def __init__(self,path):
        self.path=path
        os.chdir(self.path)

    #添加,这里写的是头部添加,也可稍加修改写成尾部添加
    def add(self):
        content_to_add = input("请输入需要添加的内容,输入完成后点击回车:")
        original_name_list= os.listdir(self.path)
        for original_name in original_name_list:
            #不等于本程序文件,则进行添加,防止修改本文件
            if original_name != os.path.split(__file__)[-1]:      
                os.rename(original_name, content_to_add+original_name)
        print("添加完成\n")


    #删除文件名中指定内容
    def delete(self):
        content_to_delete = input("请输入需要删除的内容,输入完成后点击回车:")
        #获取目录下所有文件的  列表
        original_name_list= os.listdir( self.path)                           
        for original_name in original_name_list:
            #不等于本程序文件,则进行修改,防止修改本程序文件
            if original_name != os.path.split(__file__)[-1]:          
                #分离文件名字和后缀,防止修改文件后缀   
                file_name_list = os.path.splitext(original_name)        
                if content_to_delete in file_name_list[0]:
                     #利用replace函数删除
                    os.rename(original_name, file_name_list[0].replace(
                    content_to_delete,"")+ file_name_list[1])  
        print("删除完成\n")


    # 可以用正则表达式匹配,删除文件名中有规律的变化内容。
    # 例如:删除“附件1 合同1.docx ”  “附件2 合同2.docx” ·····中的  “附件n”
    def delete_re(self):
        original_name_list= os.listdir( self.path)
        for original_name in original_name_list:
            if original_name != os.path.split(__file__)[-1]:                 
                file_name_list = os.path.splitext(original_name)    
                try:
                    #利用正则匹配删除文件名中所有“附件n”,返回过滤后的字符串    
                    result = re.sub("附件\d*", "", file_name_list[0])      
                    os.rename(original_name, result+file_name_list[1])
                except Exception as e:
                    pass
        print("删除完成\n")


    #删除首尾空格
    def delete_space(self):
        original_name_list = os.listdir(self.path)
        for original_name in original_name_list:
            if original_name != os.path.split(__file__)[-1]:
                file_name_list = os.path.splitext(original_name)  
                 #strip函数删除首尾空格        
                os.rename(original_name,file_name_list[0].strip()+file_name_list[1])  
        print("删除完成\n")
  

if __name__ == "__main__":
    #新建类的实例,传递待修改路径
    ex=ChangeFilename("C://Users//wd10//Desktop//新建文件夹")                 
    ex.delete_re()
    #ex.add()
    ex.delete_space()

OS 模块函数介绍:

更多函数可查看OS函数

1 os.chdir 用于改变当前工作目录到指定的路径。

os.chdir(path)

2 os.listdir 返回指定的文件夹包含的文件或文件夹的名字的列表,以列表格式返回。

os.listdir(path)

3 os.path.split 返回文件的路径和文件名,以元组形式返回。

>>>os.path.split('C:/python/test.py')
('C:/python', 'test.py')
>>>os.path.split('C:/python/test.py')[-1]          
test.py
>>>os.path.split(__file__)[-1]       #用于获取当前运行py文件的文件名
test.py

4 os.rename 方法用于命名文件或目录。

os.rename(src, dst)       #src:要修改的目录名    dst : 修改后的目录名

5 os.path.splitext 将文件名和扩展名分开,以元组形式返回。

>>>os.path.splitext('test.py')
('test', '.py')
>>>os.path.splitext('test.py')[0]             
test
上一篇 下一篇

猜你喜欢

热点阅读