前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小实战_01_修改文件夹名称里的数字格式

小实战_01_修改文件夹名称里的数字格式

作者头像
老表
发布2023-09-09 09:36:36
2220
发布2023-09-09 09:36:36
举报
文章被收录于专栏:用户2910674的专栏

突破传统学习束缚,借助ChatGPT的神奇力量,解锁AI无限可能!

我又开启了一个新系列,小实战系列,顾名思义,就是比较小的案例实战,解决学习、工作中的一些小脚本、案例分享。

如果你也有相同问题,希望文章能帮到你,如果你有其他相关问题或者想法,欢迎留言交流。

今天的问题: 批量修改文件夹名称,规则:将文件夹名称里的数字(如1.1)改成指定格式(改成1.01)

思考: 为什么要这样做?看下面例子,当单组课件文件夹序号大于10时,在文件列表里顺序就乱了,会有点影响使用和观看。

之所以顺序会乱,是因为文件系统默认是按同一位置字符串顺序升序排序的,比如 abc 和 aca排序的时候,abc 会在 aca之前,排序逻辑如下:

那对于我们的案例如何解决这个问题呢?如何让 '3.10' 排到 '3.9'之后?

其实很简单,让3.9变成 3.09即可。

代码快速解决问题:

代码语言:javascript
复制
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}')

问题解决:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档