吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 645|回复: 9
收起左侧

[Python 原创] 统一文件名中数字位数

[复制链接]
wapjsx 发表于 2024-12-19 16:29
我查找了下论坛里也有很多类似功能的东东,但总感觉所有软件也好,代码也罢,都是自己做的最合意!


若一个文件夹里有很多个数字开头命名的文件如:0、1、2、……、10、11、……100、101等,排名的顺序比较乱,不会如前面的顺序排列;


大多数情况会如下:

0AAAA.txt
1AAAA.txt
10AAAA.txt
100AAA.txt

2AAAA.txt
20AAAA.txt

下面的程序目的就是把前面的数字提取出来,然后再在前面加零,结果将是:


0000AAAA.txt
0001AAAA.txt
0002AAAA.txt
0010AAAA.txt
0020AAAA.txt
0100AAAA.txt




[Python] 纯文本查看 复制代码
import osimport re

def rename_files_in_directory(directory):
    number_pattern = re.compile(r'\d+')
for filename in os.listdir(directory):
    print(filename)
    fa = number_pattern.findall(filename)  # 查找文件名中的数字
    if len(fa) >0:
        _new_f = fa[0].zfill(4)   # 左边用零填充数字到4位数
        _t = filename.partition(fa[0])  # 用查找到的数字来对文件名分隔
        new_filename = _new_f + _t[-1]  # 用新的数字加上后面的内容来作为文件名
        old_path = os.path.join(directory, filename)
        new_path = os.path.join(directory, new_filename)
        os.rename(old_path, new_path)
        # print(old_path, new_path)


# 使用示例
directory = "/data/home/greatwall/Documents"  # 替换为你的目录路径
rename_files_in_directory(directory)

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| wapjsx 发表于 2024-12-20 08:35
lisongmei 发表于 2024-12-19 16:52
路过,正则替换也可以直接实现在前面加 指定数量的 0
[mw_shl_code=python,true]cp=re.compile(r'^(\d+)') ...

您这个方法很不错!

在学习正则时,有学到过;但在实际中却不懂得如何去使用。

看来还是我学得不精,且只解决 自己实际中的问题为要;需要改正浅尝辄止的学习方式。
lisongmei 发表于 2024-12-19 16:52
路过,正则替换也可以直接实现在前面加 指定数量的 0
[Python] 纯文本查看 复制代码
cp=re.compile(r'^(\d+)')
for name in lsts:
        x=cp.match(name)
        y=x.span()[-1]
        s='0'*(4-y)
        newname=cp.sub(r'%s\g<1>'%s,name)
        print(name,newname)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
wapjsx + 1 + 1 学习了!

查看全部评分

enze999 发表于 2024-12-19 16:53
yigaosoft 发表于 2024-12-19 17:02
思路非常清晰,不错的文章
myFreedao 发表于 2024-12-19 17:09
lisongmei 发表于 2024-12-19 16:52
路过,正则替换也可以直接实现在前面加 指定数量的 0
[mw_shl_code=python,true]cp=re.compile(r'^(\d+)') ...

我想到的是使用zfill(4)方法
lanjishu 发表于 2024-12-19 20:54
支持一下。
xieyinghao 发表于 2024-12-20 10:27
很好的资源,谢谢!
qq309160 发表于 2024-12-21 17:56
用过excel里的公式,这个可以试试
tangguokui 发表于 2024-12-29 18:01
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-7 20:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表