美文网首页
Python-批量修改文件名

Python-批量修改文件名

作者: 哼Bug | 来源:发表于2019-06-12 18:34 被阅读0次

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

    完整代码:

    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
    

    相关文章

      网友评论

          本文标题:Python-批量修改文件名

          本文链接:https://www.haomeiwen.com/subject/pjrrfctx.html