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

Python: 批量修改文件名

作者: 谢小帅 | 来源:发表于2018-07-27 15:30 被阅读86次

    问题描述

    US_mid目录下,images中部分图片有label,存储在labelTxt路径
    现在根据labelTxt路径下的文件,找到images路径对应的图片
    并将其名字修改成对应的形式,比如 1.txt,1.jpg -> P0001.txt,P0001.jpg

    import os
    
    """问题描述:
    US_mid目录下,images中部分图片有label,存储在labelTxt路径
    现在根据labelTxt路径下的文件,找到images路径对应的图片
    并将其名字修改成对应的形式,比如 1.txt,1.jpg -> P0001.txt,P0001.jpg
    """
    
    ROOT_PATH = 'C:/Users/Shuai/Desktop/US_mid'
    
    image_path = ROOT_PATH + '/images'
    label_path = ROOT_PATH + '/labelTxt'
    
    
    def custombasename(fullname):
        return os.path.basename(os.path.splitext(fullname)[0])
    
    
    def getnewname(oriname):
        namelen = 4  # 总共1000+图
        newname = 'P'
        for i in range(namelen - len(oriname)):
            newname += '0'
        newname += oriname
        return newname
    
    
    # 按文件名数值大小排序
    image_list = sorted(os.listdir(image_path), key=lambda t: int(t[:t.index('.')]))
    label_list = sorted(os.listdir(label_path), key=lambda t: int(t[:t.index('.')]))
    
    # 同时修改 image 和 label 的名字 1.json,1.jpg -> P0001.json,P0001.jpg
    begin = 875  # 图片有序排列 开始序号
    for i in range(len(label_list)):
        os.rename(label_path + '/' + label_list[i], label_path + '/' + getnewname(str(begin + i)) + '.txt')
        os.rename(image_path + '/' + custombasename(label_list[i]) + '.jpg',
                  image_path + '/' + getnewname(str(begin + i)) + '.jpg')
        print('%d/%d' % (i + 1, len(label_list)))
    

    images中剩余的没标记的图片用作测试集,也批量将其重命名。

    import os
    
    """
    批量修改测试集图片名
    """
    
    
    def getnewname(oriname):
        namelen = 4  # 总共1000+图
        newname = 'T'
        for i in range(namelen - len(oriname)):
            newname += '0'
        newname += oriname
        return newname
    
    
    filepath = 'C:/Users/Shuai/Desktop/US_mid/images'
    
    # 有序图片列表
    file_list = sorted(os.listdir(filepath), key=lambda t: int(t[:t.index('.')]))
    
    begin = 237
    for i in range(len(file_list)):
        os.rename(filepath + '/' + file_list[i], filepath + '/' + getnewname(str(begin + i)) + '.jpg')
        print('%d/%d' % (i, len(file_list)))
    

    注意:os.rename 操作是不可逆的,要谨慎使用!

    相关文章

      网友评论

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

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