Python 脚本:替换文件名中的 '00' 为 '-',确保英文字母后的 '00' 保持不变

本脚本使用 Python 语言,针对文件夹内的 MP4 文件进行批量重命名操作。主要功能是将文件名中的 '00' 替换为 '-',但需确保英文字母后的 '00' 不被替换。脚本利用 os 库进行文件操作,并利用 natsort 库对文件进行自然排序。

import os
import glob
from natsort import natsorted

dir_path = r'E:\home\up'
output_dir = r'E:\home\up\1'

# 当前文件夹下的所有mp4路径
L = []
for root, dirs, files in os.walk(dir_path):
    files = natsorted(files)
    for file in files:
        if os.path.splitext(file)[1] == '.mp4':
            file_path = os.path.join(root, file)
            L.append(file_path)

# 生成ffmpeg命令
commands = []
for l in L:
    ts_file = os.path.join(os.path.dirname(l), os.path.splitext(os.path.basename(l))[0] + '.ts')
    commands.append(f'ffmpeg -i '{l}' -vcodec copy -acodec copy -bsf:v h264_mp4toannexb '{ts_file}'')

# 获取文件名 + '.mp4'
new_file_name = os.path.splitext(os.path.basename(L[0]))[0] + '.mp4'
concat_command = (
    f'ffmpeg -i 'concat:{{'|' .join([os.path.join(os.path.dirname(l), os.path.splitext(os.path.basename(l))[0] + '.ts') for l in L])}}' ' 
    '-acodec copy -vcodec copy -bsf:a aac_adtstoasc ' 
    f''{os.path.join(output_dir, new_file_name)}''
)

# 执行ffmpeg命令
for command in commands:
    os.system(command)

os.system(concat_command)

# 删除ts文件
for ts_file in glob.glob(os.path.join(dir_path, '*.ts')):
    os.remove(ts_file)

# 输出文件命名
for mp4_file in glob.glob(os.path.join(output_dir, '*.mp4')):
    file_name = os.path.splitext(os.path.basename(mp4_file))[0]
    if file_name.startswith('h_'):
        file_name = file_name[1:].replace('00', '-', 1)  # 从第二个英文字母开始,00替换为-
        file_name = 'h_' + file_name[1:].replace('-00', '-00', 1)  # 如果是英文字母之后的'00'则替换为'00'
    else:
        file_name = file_name.replace('00', '-', 1)  # 从第一个英文字母开始,00替换为-
    file_name = file_name.strip('0123456789.-_')  # 去除文件名中的数字、点、横杠和下划线
    new_file_name = file_name.upper() + '.mp4'  # 转换为大写并加上后缀
    os.rename(mp4_file, os.path.join(output_dir, new_file_name))

代码说明

  1. 导入必要的库:osglobnatsort
  2. 定义源文件夹路径 dir_path 和目标文件夹路径 output_dir
  3. 使用 os.walk 遍历源文件夹,获取所有 MP4 文件路径,并使用 natsorted 进行自然排序,并将路径存入列表 L
  4. 使用 ffmpeg 命令将每个 MP4 文件转换为 TS 文件,并将命令存入列表 commands
  5. 使用 ffmpeg 命令将所有 TS 文件合并为一个新的 MP4 文件
  6. 删除所有生成的 TS 文件
  7. 遍历目标文件夹内的所有 MP4 文件,进行重命名操作:
    • 首先判断文件名是否以 'h_' 开头,如果是,则先将第一个 '00' 替换为 '-',然后再将英文字母后的 '00' 替换为 '00',否则直接将 '00' 替换为 '-'。
    • 然后去除文件名中的数字、点、横杠和下划线
    • 最后将文件名转换为大写并加上 '.mp4' 后缀,并进行重命名操作

脚本功能

本脚本可以实现以下功能:

  • 批量将 MP4 文件转换为 TS 文件
  • 将多个 TS 文件合并为一个新的 MP4 文件
  • 替换文件名中的 '00' 为 '-',确保英文字母后的 '00' 不被替换
  • 去除文件名中的数字、点、横杠和下划线
  • 将文件名转换为大写并加上 '.mp4' 后缀

使用方法

  1. 将脚本保存为 .py 文件
  2. 修改脚本中的 dir_pathoutput_dir 路径
  3. 运行脚本

注意

  • 确保系统已安装 ffmpegnatsort
  • 脚本会覆盖目标文件夹中的所有文件,请谨慎使用
  • 脚本只针对文件名进行处理,不会对文件内容进行修改

总结

本脚本可以有效地对 MP4 文件进行批量重命名操作,并可以根据需要进行修改和调整。

Python 脚本:替换文件名中的 '00' 为 '-',确保英文字母后的 '00' 保持不变

原文地址: https://www.cveoy.top/t/topic/nC3h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录