Python实践:批量修改文件名

该博客介绍了一个Python脚本,用于批量修改指定目录下文件的名称,特别是针对具有固定格式的文件名,如ch_xx_bitrate_0/1.bit。脚本首先获取文件名中的声道数、01和码率信息,然后根据需求生成新的文件名并进行重命名。此外,脚本还能生成解码指令和md5sum校验指令,方便后续处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python实践:批量修改文件名

在这里插入图片描述

问题背景


因项目需要,有个需求是将某目录下各文件添加特定格式的后缀标记,为提高效率,遂编写此自动化脚本。读者可根据自身需要进行修改。

实现思路


前提:码流名字中含有声道数、01、码率信息,且命名格式固定
功能:利用已经生成好的码流及其名字,生成对应的解码指令和md5sum

编码思路:

  • 获取文件名字
  • 统一文件命名格式,ch_xx_bitrate_0/1.bit
  • 从文件名中获取ch/bitrate/01信息
  • 根据输入要求,连接新的文件名字符串
  • 利用rename函数进行重命名

Python代码


前置知识:

  • import os, 导入系统文件操作包
  • os.listdir(文件夹路径),获取指定目录下的所有子目录和文件名
  • os.chdir(文件夹路径),切换到当前目录下
  • os.rename(原文件名,新文件名),对文件或目录改名

具体代码:

# -*- coding: utf-8 -*-
'''
@Time    : 2021年12月31日
'''

import os

# 批量改名函数
def rename_file(path):
    file_list = os.listdir(path)
    # 必须先切换到当前目录下,os.rename才能找到对应文件去改名
    os.chdir(path)
    for old_name in file_list:
#        # 改2声道
#        new_name = "2_" + old_name
        
        # 改1-channels
        tmp_name = old_name.split('-')[1]
        print(tmp_name)
        ch = old_name.split('_')[1]
        print(ch)
        new_name = ch + '_' + tmp_name

        # 改名
        os.rename(old_name, new_name)
        
    return


if __name__ == '__main__':
    path = r"D:\sequences\input"
    outPath = r"D:\sequences\output"
    inputBatPath = r"D:\sequences\bat"
    pathRename = r"D:\sequences\files"
    namelist = os.listdir(path)
    
    
    # 批量重命名文件
#    rename_file(pathRename)
     
    with open(os.path.join(outPath, "file_list_test.txt"), "w", encoding="UTF-8") as f:
        f.write('\n'.join(namelist[:-1]))

    all_test_list = []
    all_md5sum_list = []
     
    for name in namelist:
        # 获取信息
        ch = name.split('_')[0]
        isSetereo = name.split('_')[-1]
        isSetereo = isSetereo[:-4] #左闭右开,去掉.bit
        bitrate = name.split('_')[-2]
        
        # 连接指令
        dec_cmd = '{0} {1} {2} /mnt/data/{3}  '.format(ch, isSetereo, bitrate, name)
        md5_cmd = 'md5sum /mnt/data//{0}_out.wav  '.format(name[:-4])
        
        # 追加到输出数组
        all_test_list.append(dec_cmd) 
        all_md5sum_list.append(md5_cmd)    

    with open(os.path.join(outPath, "test_list.txt"), "w", encoding="UTF-8") as f:
        f.write('\n'.join(all_test_list))

    with open(os.path.join(outPath, "md5sum_out.sh"), "w", encoding="UTF-8") as f:
        f.write('\n'.join(all_md5sum_list))

参考资料


  1. 简书:Python修改文件名,link
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值