[python]给文件批量重命名 前缀 后缀 含子文件

  • Post author:
  • Post category:python




10.1.1 给文件加前缀(不含sub)

如何批量给一个文件夹下面的文件(不含子文件夹)统一 加前缀?

作用:用os.listdir方法,只修改父文件夹下(不包括子文件夹)的某种类型文件名,子文件夹里的同种类型文件不受影响。

#效果:对选定文件夹下面的所有文件但不包括它的子文件夹 在旧名字的基础上加一个前缀
#本质: 用rename函数 old_name---->mark+old_name

import os,sys                       #导入模块


def add_prefix_str_i_files():             #定义函数名称 该函数用于加前缀 'str'+i+'_'
#只需要修改mark里面的str内容,就改变输出

    old_names = os.listdir( path )  # os.listdir() 取该路径下所有文件和文件夹 名字,生成一个文件和文件夹名列表
    a = 1
    for old_name in old_names:      #遍历文件和文件夹名列表

        mark = 'chapter' + str(a) + '_'
        if  old_name!= sys.argv[0]:  # 确保本代码文件名不和要改的文件同名,防止脚本文件放在path路径下时,被一起重命名

               if old_name.endswith('.txt'):   #判断文件名是否以.txt后缀结尾,返回是真则继续运行
                    os.rename(os.path.join(path,old_name),os.path.join(path,mark+old_name))  #重命名文件
                    print (old_name,"has been renamed successfully! New name is: ",mark+old_name)  #输出提示
                    a+=1

if __name__ == '__main__':   #控制程序 只有当作为脚本执行时,下面的代码才会有效
        path = r'C:\Nora\04_files\code'   #运行程序前,记得修改主文件夹路径!
        add_prefix_str_i_files()         #调用函数

在这里插入图片描述



10.1.2 给文件加前缀(含sub)

如何批量给一个文件夹下面的文件(含子文件夹)统一 加前缀?

作用:用os.walk方法,将父文件夹所有文件(包括子文件夹内)加上前缀。

#效果:对选定文件夹下面的所有文件和它的子文件夹 在旧名字的基础上加一个前缀
import os,sys                       #导入模块
def add_prefix_files():             #定义函数名称
    mark = 'prefix_'                 #准备添加的前缀内容
    for foldName, subfolders, filenames in os.walk(path):     #用os.walk方法取得path路径下的文件夹路径,子文件夹名,所有文件名; 这一步决定了,此次改名对文件夹下面的包括子文件夹里的所有文件有效
        for filename in filenames:     #遍历列表下的子文件夹名
            if  filename!= sys.argv[0]:  #代码本身文件路径,防止脚本文件放在path路径下时,被一起重命名
               if filename.endswith('.txt'):   #当文件名以.txt后缀结尾时
                    os.rename(os.path.join(foldName,filename),os.path.join(foldName,mark+filename))  #重命名文件
                    print (filename,"has been renamed successfully! New name is: ",mark+filename)  #输出提示

if __name__ == '__main__':          #控制程序 只有当作为脚本执行时,下面的代码才会有效
        path = r'C:\Nora\04_files\code'   #运行程序前,记得修改主文件夹路径!
        add_prefix_files()         #调用定义的函数,注意名称与定义的函数名一致



10.1.3 给文件加后缀(不含sub)

如何批量给一个文件夹(不含子文件夹)下面的文件统一 加后缀?

采用替换的方式来添加后缀。

#this is for rename all files (subfile included )by add suffix
#本质: 用replace函数替换后缀
import os,sys                       #导入模块
def rename_files():             #定义函数名称
    old_names = os.listdir( path )  #取路径下的文件名,生成列表
    for old_name in old_names:      #遍历列表下的文件名
            if  old_name!= sys.argv[0]:  #代码本身文件路径,防止脚本文件放在path路径下时,被一起重命名
               if old_name.endswith('.txt'):   #当文件名以.txt后缀结尾时
                    new_name=old_name.replace('.txt','_test.txt')   #将原来名字里的‘.txt’替换为‘-test.txt’,相当于加个后缀了
                    os.rename(os.path.join(path,old_name),os.path.join(path,new_name))  #重命名文件
                    print (old_name,"has been renamed successfully! New name is: ",new_name)  #输出提示

if __name__ == '__main__':
        path = r'C:\Nora\04_files\code'   #运行程序前,记得修改主文件夹路径!
        rename_files()         #调用定义的函数,注意名称与定义的函数名一致



10.1.4 给文件加后缀(含sub)

如何批量给一个文件夹(含子文件夹)下面的文件统一 加后缀?

采用替换的方式来添加后缀。

#效果:对选定文件夹下面的所有文件和它的子文件夹 在旧名字的基础上加一个后缀

import os,sys                       #导入模块
def rename_files():             #定义函数名称
    for foldName, subfolders, filenames in os.walk(path):     #用os.walk方法取得path路径下的文件夹路径,子文件夹名,所有文件名 ;这一步决定了,此次改名对文件夹下面的包括子文件夹里的所有文件有效
        for filename in filenames:     #遍历列表下的子文件夹名
            if  filename!= sys.argv[0]:  #代码本身文件路径,防止脚本文件放在path路径下时,被一起重命名
               if filename.endswith('.txt'):   #当文件名以.txt后缀结尾时
                    new_name=filename.replace('.txt','_suffix.txt')   #将原来名字里的‘.txt’替换为‘-test.txt’,相当于加个后缀了
                    os.rename(os.path.join(foldName,filename),os.path.join(foldName,new_name))  #重命名文件
                    print (filename,"has been renamed successfully! New name is: ",new_name)  #输出提示

if __name__ == '__main__':          #控制程序 只有当作为脚本执行时,下面的代码才会有效
        path = r'C:\Nora\04_files\code'   #运行程序前,记得修改主文件夹路径!
        rename_files()         #调用定义的函数,注意名称与定义的函数名一致



—————————-



版权声明:本文为m0_51963375原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。