【批量修改文件名并移动】

该代码示例展示了如何使用Python的os和shutil模块来批量修改文件名并将其移动到新的文件夹中。主要函数包括moveFiles用于移动文件,rename用于重命名文件,get_source_img_path获取源文件路径,以及get_child_dirsName获取子目录名。整个流程首先遍历指定根目录下的所有子目录和文件,然后对每个文件进行重命名并移动。
摘要由CSDN通过智能技术生成

若仅批量修改文件名,可查看批量修改文件名,这里主要介绍批量修改文件名并移动到新的文件夹中的方法,具体代码如下(代码中有注释进行详细说明):

import os.path
import shutil
import os 
num = 0 #修改文件名的数量词
imge_count = 717
#保存图片模块
def moveFiles(path, disdir):  # path为原始路径,disdir是移动的目标目录

    dirlist = os.listdir(path)
    for i in dirlist:
        child = os.path.join('%s/%s' % (path, i))
        if os.path.isfile(child):            
            imagename, jpg = os.path.splitext(i)  # 分开文件名和后缀
            shutil.copy(child, os.path.join(disdir, imagename + ".jpg"))#保存格式自己设置
            # 复制后改为原来图片名称
            # 也可以用shutil.move()
            continue
        moveFiles(child, disdir)
#重命名模块
def rename(img_folder):
    for img_name in os.listdir(img_folder):  # os.listdir(): 列出路径下所有的文件
        #os.path.join() 拼接文件路径
        global imge_count
        src = os.path.join(img_folder, img_name)   #src:要修改的目录名
        dst = os.path.join(img_folder, 'BulletHole_'+ str(imge_count) + '.jpg') #dst: 修改后的目录名      注意此处str(num)将num转化为字符串,继而拼接
        imge_count= imge_count + 1
        os.rename(src, dst) #用dst替代src

def get_source_img_path(rootPath):
    file_ls = []
    for root, dirs, files in os.walk(rootPath):
        if files:
            root_file_ls = [os.path.join(root, file) for file in files]
            file_ls.append(root_file_ls)
    return file_ls

def get_child_dirsName(rootPath):
    childDirsName = []
    for root, dirs, files in os.walk(rootPath):
        for dir in dirs:
            childDirsName.append(str(dir))
    return childDirsName

def main():
    rootPath = "/home/y/Code/test/dataset/"

    childDirsName = get_child_dirsName(rootPath)
    for dir_name in childDirsName:
        #要修改文件名的路径
        img_folder0 =  rootPath + dir_name #图片的文件夹路径    直接放你的文件夹路径即可
        rename(img_folder0)

        #保存图片代码
        disdir = '/home/y/Code/test/test_dataset'  # 移动到目标文件夹
        moveFiles(img_folder0, disdir)

if __name__=="__main__":
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值