Python实现批量重命名

举报
irrational 发表于 2022/01/23 02:34:16 2022/01/23
【摘要】 Python实现批量重命名 最近在网络上下载了一部漫画,漫画是图片形式的,下载下来后才发现每一张漫画图片的文件名都是没有规律且又长又复杂的,想要把它们改成按数字递增规律的,一个一个去改文件名工作量太大,...
  • Python实现批量重命名

    最近在网络上下载了一部漫画,漫画是图片形式的,下载下来后才发现每一张漫画图片的文件名都是没有规律且又长又复杂的,想要把它们改成按数字递增规律的,一个一个去改文件名工作量太大,浪费太多时间,于是心想用Python写一个脚本实现批量重命名的操作。

    img

    文件存放在 D:/temp 路径下,文件名类似上图,图片很多,这里仅用少部分做演示

    为了完成脚本,查阅了Python有关文件名的库,发现需要用到Python标准库中的os库。

    一、重命名函数

    Python中有一个给文件重命名的函数:

    os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
    
        
       
    • 1

    该函数就是将文件名从src改为dst,后两个参数用不到先忽略。

    二、获取文件名函数

    我们还需要获取原文件名,也就是src。

    os库中还有一个函数可以获取文件名:

    os.listdir(path='.')
    
        
       
    • 1

    该函数可以列出某个目录下的所有文件名。

    所有我们用一个for循环可以获取每一个文件名

    for file in os.listdir(r'D:/temp'):
        print(file)
    
        
       
    • 1
    • 2

    输出:

    %80%90%E4%B8%89%E7%A7%8B%E4.jpg
    %AE%E5%8B%92%E6%9E%81%E7%A6.jpg
    %E6%B3%B0%E6%99%AE%E5%8B%92.jpg
    %E8%A3%85%E5%85%E6%B3%B0%E6.jpg

    三、路径合并函数

    由于图片文件和Python脚本并不在同一文件夹下,所以此时的src和dst并不是简单的文件名,而是由路径+文件名组成。例如,文件%80%90%E4%B8%89%E7%A7%8B%E4.jpg其实是

    E:/temp/%80%90%E4%B8%89%E7%A7%8B%E4.jpg,所以我们需要将两部分组合起来。

    Python的os库中有一个函数:

    os.path.join(path, *paths)
    
        
       
    • 1

    该函数合理地拼接一个或多个路径部分,返回值是 path 和 *paths 所有值的连接。

    上面的例子就可以像下面这样写:

    os.path.join(r'D:/temp','%80%90%E4%B8%89%E7%A7%8B%E4.jpg')
    
        
       
    • 1

    批量重命名脚本

    于是利用上面这些知识可以写出下面这个完整的脚本(GitHub-Yajanan/FilesPathRename):

    # FilesBatchRename.py
    # 导入os库
    import os
    
    # 图片存放的路径
    path = r"D:/temp"
    
    # 遍历更改文件名
    num = 1
    for file in os.listdir(path):
        os.rename(os.path.join(path,file),os.path.join(path,str(num))+".jpg")
        num = num + 1
    
        
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    运行一下,可以看到结果如下:

    img

    满足了我们的需求。

文章来源: blog.csdn.net,作者:irrationality,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_54227557/article/details/122611889

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。