批量添加文件序号


在大多数时候,使用视频或者音频播放器的时候,由于大多数文件名的头部名称都不相同,尤其是同一目录下的视频,除非你添加整个视频到播放器列表中,否则你可能只能看到只有一部分相同文件名称的视频在重复的播放,也只有相同头部文件名的视频才会被顺序播放,而且被顺序播放的视频或者音频都默认按照名称排序,一般情况下文件的默认排序是:数字优先级最高,其次是字母,然后才是中文。

前言

在大多数时候,使用视频或者音频播放器的时候,由于大多数文件名的头部名称都不相同,尤其是同一目录下的视频,除非你添加整个视频到播放器列表中,否则你可能只能看到只有一部分相同文件名称的视频在重复的播放,也只有相同头部文件名的视频才会被顺序播放,而且被顺序播放的视频或者音频都默认按照名称排序,一般情况下文件的默认排序是:数字优先级最高,其次是字母,然后才是中文。

介绍

为了解决不同文件名间无法读取的情况,为此我要写一个向所有视频的文件名头部添加数字顺序编号,以此来解决这个问题。这个程序将获取一个需要批量重命名的文件绝对路径,然后程序会遍历当前路径下所有的文件列表,并自动的添加数字编号,数字编号默认为三位数,当编号不足三位时会用 0 来补位填充,并会添加一个下划线以此来区分文件原名称和序号直接的区别,这个程序目前没有能力再次判断当前文件是否已被修改。所以,你可能不能再次输入相同的路径,否则这种糟糕的情况就会发生。

代码

import os
import StringOD.drawLine as drawLine
import StringOD.StringLine as StringLine

# 绘制程序顶部边界线
drawLine.drawStringLine()
print("名称: 批量添加文件序号")
print("功能: 解决某些情况下文件列表下文件名称不统一导致播放器无法读取下一个文件")
# 绘制程序底部边界线
drawLine.drawStringLine()

# 获取文件路径
getFilePath = input("输入需要批量修改的文件绝对路径: ")
# getFilePath = r"C:\Users\HiWin10\Desktop\TwitterYouTube"
# 删除路径两侧的双引号
getFilePath = getFilePath.lstrip('"')
getFilePath = getFilePath.rstrip('"')
# 遍历文件列表
getVedioList = os.listdir(getFilePath)
# 初始化计数器
count = 0
print("查看文件列表getVedioList: ")
for i in getVedioList:
    print(i)
    count += 1
# 绘制局部分割线
StringLine.StringODLine()

# 获取文件列表长度
print("获取文件列表长度count: ", count)
# 备份文件长度
FileLength = count
# 生成整数列表
intFileNameList = []
for i in range(1, FileLength + 1):
    intFileNameList.append(i)
    count += 1
# 测试输出
print(intFileNameList)
# 绘制局部分割线
StringLine.StringODLine()

# 初始化三位数序号列表
strFileNumber = []
# 设置显示位数为最大为三位, 不足长度0补位
for i in intFileNameList:
    # 一位数 转换 三位数
    if len(str(i)) == 1:
        strFileNumber.append("00" + str(i))
    # 二位数 转换 三位数
    elif len(str(i)) == 2:
        strFileNumber.append("0" + str(i))
    # 三位数 转换 字符串
    elif len(str(i)) == 3:
        strFileNumber.append(str(i))
# 初始化计数器
count = 0
# 遍历字符串列表
for i in strFileNumber:
    print(i)
    count += 1
# 绘制局部分界线
StringLine.StringODLine()

# 初始化文件列表完整名称列表
setVedioFileName = []
# 初始化计数器
count = 0
# 添加序号到文件列表
for i in range(len(getVedioList)):
    setVedioFileName.append(strFileNumber[count] + "_" + getVedioList[count])
    count += 1
# 初始化计数器
count = 0
# 检查完整文件列表
for i in setVedioFileName:
    print(i)
    count += 1
# 绘制局部分界线
StringLine.StringODLine()

# 初始化已修改文件绝对路径
changeVedioFileAbsPath = []
# 初始化计数器
count = 0
# 重命名文件
for i in getVedioList:
    os.rename(getFilePath + "\\" + getVedioList[count], getFilePath + "\\" + setVedioFileName[count])
    changeVedioFileAbsPath.append(getFilePath + "\\" + setVedioFileName[count])
    count += 1
for i in os.listdir(getFilePath):
    print(os.path.abspath(i))
print("操作完成")
input("按下回车键退出程序...")

文章作者: StringOD
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 StringOD !
  目录