• 作者:老汪软件技巧
  • 发表时间:2024-09-02 00:04
  • 浏览量:

背景

2022年从网络公开渠道爬到了蒋勋老师的细说红楼梦80回的音频,爬虫得到的文件命名是乱序的,曾经想排序来的,后来就忘记了。

最近突然想起这套音频资源了,想着做个排序吧。未排序之前,按爬虫的顺序存储的文件:

解决办法

红楼梦小说章节简介_红楼梦解析书_

遍历目标文件,解析每个文件中的章回数,然后再对文件名称拼接上两位数字的章回数。用 Python 比较容易:

import os
#目标目录
dir = '/Applications/2022MyTextFiles/80回蒋勋讲红楼梦'
#汉字和数字映射关系
chinese_numbers = {
        '一':'1',
        '二':'2',
        '三':'3',
        '四':'4',
        '五':'5',
        '六':'6',
        '七':'7',
        '八':'8',
        '九':'9',
        '十': '0'
}
# 遍历文件:重命名
for root, dirs, files in os.walk(dir):
    for file in files:
        #查找章回的位置,且必须排除掉系统文件
        if file == '.DS_Store':
            continue
        print(file)
        indexOfOrder=file.index("回")
        # 找回数
        ordNum=file[1:indexOfOrder]
        #文件名称前拼接两位数的回数,总共就5种情况
        newName=''
        if ordNum == '十' : # 第十回
            newName='10'
        elif ordNum.endswith('十'):#第十回
            newName=chinese_numbers[ordNum[0]]+'0'
        elif len(ordNum) == 1: #第一~九回
            newName = '0'+chinese_numbers[ordNum[0]]
        elif ordNum.startswith('十'):#第几十回
            newName = '1'+chinese_numbers[ordNum[1]]
        else:#第几十几回
            newName = chinese_numbers[ordNum[0]]+chinese_numbers[ordNum[2]]
        #重命名,注意加上文件根路径
        os.rename(root+'/'+file,root+'/'+newName+file)
print('完成')

排序效果:

按文件名称排序,顺眼多了!