批量重命名文件

从start_index开始按顺序编号命名,num位。如000001.jpg,000002.jpg

import os
import argparse as ap
 
def rename(path, num, start_index):
    filelist = os.listdir(path)
    filelist = sorted(filelist)
    img = start_index
    for files in filelist:
        Olddir = os.path.join(path, files)
        if os.path.isdir(Olddir):
            continue
        filename = os.path.splitext(files)[0]
        filetype = os.path.splitext(files)[1]
        if str(img).zfill(num) == filename:
            img = img + 1
            continue
        New_name = str(img).zfill(num) + filetype
        New_name_path = os.path.join(path, New_name)
        os.rename(Olddir, New_name_path)
        img = img + 1
    print("Rename Done.")
    
if __name__ == "__main__":
    # Argument Parser
    parser = ap.ArgumentParser()
    parser.add_argument("--images", help="Path to images",
                        default="./train")
    parser.add_argument("--start", help="Path to images",
                        default=1)
    parser.add_argument("--num", help="Number of digits",
                        default=6)
    args = vars(parser.parse_args())
    images_path = args["images"]
    start_index = args["start"]
    num = srgs["num"]
rename(images_path, num, start_index)

把文件名中指定字符串改成另一个字符串,或者直接去掉

# import os
# os.system("sed -i 's/.jpg_/_/' `grep -rl /output_people/test`")

import os
import re
import time
 
"""对指定目录下的所有文件进行有选择的修改名称"""
def ReFileName(dirPath,pattern):
    """
    :param dirPath: 文件夹路径
    :param pattern: 正则匹配模式
    :return:
    """
    # 对目录下的文件进行遍历
    for file in os.listdir(dirPath):
        # 判断是否是文件
        if os.path.isfile(os.path.join(dirPath, file)) == True:
            # 用正则匹配,去掉不需要的词(或改成其他词)
            newName = re.sub(pattern, "", file)
            # 设置新文件名
            newFilename = file.replace(file, newName)
            # 重命名
            os.rename(os.path.join(dirPath, file), os.path.join(dirPath, newFilename))
    print("文件名已统一修改成功")
 
if __name__ == '__main__':
    timeStart = time.time()
    dirPath = "./frames"	
    pattern = re.compile('B_') # 需要去掉的字符串
    ReFileName(dirPath,pattern)
    timeEnd = time.time()
    # print("程序走了%d秒"%(timeEnd-timeStart))

去掉文件名中的括号

import os
import logging
logging.disable(logging.CRITICAL)
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s-%(levelname)s:%(message)s')
 
# 定义函数
def remove_kh(file_path):
    file_list = os.listdir(file_path)
    for file in file_list:
        name = os.path.splitext(file)
        name1 = name[0]
        name2 = name[1]
        if '(' in name1:
            left_idx=name1.index('(') # 左括号idx
            right_idx = name1.index(')') # 右括号idx
            content=name1[left_idx+1:right_idx] # 括号中间的内容
            if content.isdigit(): # 如果括号中间是数字,则去掉括号以及中间的数字
                before_left=name1[:left_idx]
                aftet_right=name1[right_idx+1:]
                newname1=before_left+aftet_right
                os.renames(os.path.join(file_path,file), os.path.join(file_path,newname1.strip()+'.jpg'))
 
if __name__ == "__main__":
    file_path='./Data'
    remove_kh(file_path)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值