突破传统学习束缚,借助ChatGPT的神奇力量,解锁AI无限可能!
我又开启了一个新系列,小实战系列,顾名思义,就是比较小的案例实战,解决学习、工作中的一些小脚本、案例分享。
如果你也有相同问题,希望文章能帮到你,如果你有其他相关问题或者想法,欢迎留言交流。
今天的问题: 批量修改文件夹名称,规则:将文件夹名称里的数字(如1.1)改成指定格式(改成1.01)
思考: 为什么要这样做?看下面例子,当单组课件文件夹序号大于10时,在文件列表里顺序就乱了,会有点影响使用和观看。
之所以顺序会乱,是因为文件系统默认是按同一位置字符串顺序升序排序的,比如 abc 和 aca排序的时候,abc 会在 aca之前,排序逻辑如下:
那对于我们的案例如何解决这个问题呢?如何让 '3.10'
排到 '3.9'
之后?
其实很简单,让3.9
变成 3.09
即可。
代码快速解决问题:
import os
import re
# 指定要修改文件夹名称的目录路径
directory_path = './test'
# 获取目录中的所有文件夹
directories = [d for d in os.listdir(directory_path) if os.path.isdir(os.path.join(directory_path, d))]
# 遍历文件夹并修改名称
for old_dir_name in directories:
# 使用正则表达式匹配文件夹名称中的数字序号
match = re.search(r'(\d+)\.(\d+)', old_dir_name)
if match:
# 获取匹配到的数字序号的整数部分和小数部分
integer_part = match.group(1)
decimal_part = match.group(2)
# 如果小数部分本来就是2位,就不用处理
if len(decimal_part)>=2:
continue
# 修改小数部分为两位
new_decimal_part = decimal_part.zfill(2)
# 构建新的文件夹名称
new_dir_name = old_dir_name.replace(f'{integer_part}.{decimal_part}', f'{integer_part}.{new_decimal_part}')
# 构建文件夹的完整路径
old_dir_path = os.path.join(directory_path, old_dir_name)
new_dir_path = os.path.join(directory_path, new_dir_name)
# 重命名文件夹
os.rename(old_dir_path, new_dir_path)
print(f'rename {old_dir_path} ==> {new_dir_path}')
问题解决: