文章目录

  • 前言
  • 完整代码
  • 效果展示
    • 原目录结构
    • 运行展示
    • 修改效果
  • 代码讲解
    • 主要函数
    • os.walk(path)
    • 判断文件
    • 修改
  • END

前言

有时候我们需要批量修改一些文件的后缀名

作为程序员我们自然得自己写点脚本了

本文通过python来实现批量修改文件名,同时还能修改其子文件夹中的文件

完整代码

import osclass ChangeSuffix():def __init__(self, absolutePath, beforeSuffix, afterSuffix) -> None:self.absolutePath = absolutePathself.beforeSuffix = beforeSuffixself.afterSuffix = afterSuffixdef work(self, flag=False):# 需要修改的后缀长度LEN = len(self.beforeSuffix)for curDir, subDir, allFile in os.walk(self.absolutePath):print("当前主目录:", curDir)print("当前主目录下的所有目录", subDir)print("当前主目录下的所有文件", allFile)for curFile in allFile:curFileSuffix = curFile[-LEN:]# 判断后缀是否相同,且后缀的前一个是否是.点号if curFileSuffix == self.beforeSuffix and curFile[-(LEN+1)] == '.':oldName = os.path.join(curDir, curFile)  # 化为绝对路径newName = oldName[:-LEN] + self.afterSuffixos.rename(oldName, newName)# flag 是否递归子文件夹if not flag:breakreturn Trueif __name__ == "__main__":absolutePath = input("请输入目标文件夹的绝对路径:")beforeSuffix = input("请输入需要修改的后缀:")afterSuffix = input("请输入修改之后的后缀:")needRecursion = input("是否需要操作该目录下的子文件夹(0/1): ")print("************ START ***********")change = ChangeSuffix(absolutePath, beforeSuffix, afterSuffix)if change.work(needRecursion != "0"):print("************ END ***********")

效果展示

原目录结构

C:\Users\windows\Desktop\素材>tree /f
文件夹 PATH 列表
卷序列号为 B87D-2753
C:.
│  1.jpeg
│  main.exe
│
└─子文件夹│  2.jpeg│  3.jpeg│├─孙子文件夹1│      4.jpeg│└─孙子文件夹25.jpeg

运行展示

这里用命令行来展示

分别输入四条信息

  • 目标文件夹的绝对路径
  • 需要修改的后缀
  • 修改之后的后缀
  • 是否需要操作该目录下的子文件夹(0/1)
E:\VS Code\python>python ./test.py
请输入目标文件夹的绝对路径:C:\Users\windows\Desktop\素材
请输入需要修改的后缀:jpeg
请输入修改之后的后缀:png
是否需要操作该目录下的子文件夹(0/1): 1
************ START ***********
当前主目录: C:\Users\windows\Desktop\素材
当前主目录下的所有目录 ['子文件夹']
当前主目录下的所有文件 ['1.jpeg', 'main.exe']
当前主目录: C:\Users\windows\Desktop\素材\子文件夹
当前主目录下的所有目录 ['孙子文件夹1', '孙子文件夹2']
当前主目录下的所有文件 ['2.jpeg', '3.jpeg']
当前主目录: C:\Users\windows\Desktop\素材\子文件夹\孙子文件夹1
当前主目录下的所有目录 []
当前主目录下的所有文件 ['4.jpeg']
当前主目录: C:\Users\windows\Desktop\素材\子文件夹\孙子文件夹2
当前主目录下的所有目录 []
当前主目录下的所有文件 ['5.jpeg']
************ END ***********

修改效果

C:\Users\windows\Desktop\素材>tree /f
文件夹 PATH 列表
卷序列号为 B87D-2753
C:.
│  1.png
│  main.exe
│
└─子文件夹│  2.png│  3.png│├─孙子文件夹1│      4.png│└─孙子文件夹25.png

代码讲解

主要函数

    def work(self, flag=False):# 需要修改的后缀长度LEN = len(self.beforeSuffix)for curDir, subDir, allFile in os.walk(self.absolutePath):print("当前主目录:", curDir)print("当前主目录下的所有目录", subDir)print("当前主目录下的所有文件", allFile)for curFile in allFile:curFileSuffix = curFile[-LEN:]# 判断后缀是否相同,且后缀的前一个是否是.点号if curFileSuffix == self.beforeSuffix and curFile[-(LEN+1)] == '.':oldName = os.path.join(curDir, curFile)  # 化为绝对路径newName = oldName[:-LEN] + self.afterSuffixos.rename(oldName, newName)# flag 是否递归子文件夹if not flag:breakreturn True

os.walk(path)

这个函数会返回三个内容

  • curDir 当前主目录 str
  • subDir 当前主目录下的所有目录 list
  • allFile 当前主目录下的所有文件 list

并且在第二次循环开始是默认递归上次的子目录,因此就能达到遍历该目录下的所有文件的作用

如果不想要递归子文件夹的内容,则可以设置一个flag来结束循环

for curDir, subDir, allFile in os.walk(self.absolutePath):pass

判断文件

判断文件的方式比较简单

直接截取该文件名的末尾,判断是否和需要修改的后缀名相等,且前一个字符是点好'.'

修改

# 两个都要绝对路径
os.rename(oldName, newName)



END

(小脚本) (python) 批量修改文件后缀名相关推荐

  1. 如何批量修改文件后缀名?

    如何批量修改文件后缀名?文件的后缀名告诉了我们这个文件是什么文件,例如后缀名为docx的文件是word,后缀名为xlsx的文件是excel表格.在文件的使用过程中,我们也经常需要对文件的后缀名进行修改 ...

  2. 批量修改文件后缀名(脚本)

                                     一键批量修改文件后缀名(脚本) 输入法是英语模式输入!!! 输入法是英语模式输入!!! 输入法是英语模式输入!!! 1.在你需要更改的 ...

  3. linux sed给空文件首行插入_linux下批量修改文件后缀名以及合并多行

    写在前面 感谢乔兄送测的公司,让我终于所有营业 part1讲下怎么解决小问题 part2分享谈判过程 part3mark张兄的奶茶 PART1 linux下批量修改文件后缀名以及合并多行 近期师兄在做 ...

  4. 计算机如何更改后缀文件名,如何批量修改文件后缀名(任何文件的扩展名)?

    无需软件批量修改文件后缀名?怎么通过命令行批量修改文件后缀名?有时候由于文件后缀名格式不同,有的时候我们需要对文件扩展名进行修改,或者文件扩展名丢失,需要添加.如果数量少的文件那还简单直接修改就好了. ...

  5. 如何批量修改文件后缀名?(批量修改文件的扩展名)

    无需软件批量修改文件后缀名?怎么通过命令行批量修改文件后缀名?有时候由于文件后缀名格式不同,有的时候我们需要对文件扩展名进行修改,或者文件扩展名丢失,需要添加.如果数量少的文件那还简单直接修改就好了. ...

  6. 怎么批量修改html文件后缀,如何批量修改文件后缀名 超详细介绍

    如何批量修改文件后缀名 超详细介绍.比如我们保持图片的时候,不是我们要的jpg格式的,需要一个一个去修改她的后缀名.现在小编就教大家快速的,批量的,安全的修好多数的文件后缀名.希望能帮大家平时的工作. ...

  7. bat修改win8计算机名,Win7/win8系统下利用批处理文件批量修改文件后缀名的方法...

    大家都知道,文件后缀名也叫文件扩展名,是用来表示某种文件格式所采用的机制,不过有时候有需要想要修改文件的后缀名类型,一般都是通过右键修改重命名来完成的,但是如果需要修改多个文件后缀名的话一个个修改太麻 ...

  8. Linux下shel脚本之批量修改文件扩展名

    Linux下shel脚本之批量修改文件扩展名 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.在/data/tmp/下的所有文件扩展名改为.py ...

  9. java例程练习(批量修改文件后缀名)

    /*** 文件后缀名修改器* 说明:UI部分* @author Yours风之恋* * 创建时间:2012-8-8**/ public class UserInterface {public stat ...

最新文章

  1. python 的文件目录拷贝转移,自动递归目录建立目录
  2. html显示三维模型restful,返回带有Flask Restful的呈现模板,在浏览器中显示HTML
  3. 1、C++招聘笔试--C++中的C
  4. hadoop2.6.0安装详细步骤
  5. cpythonjavagolang_cpython:列表对象(PyListObject)的扩容机制
  6. 前端学习(2738):重读vue电商网站48之通过 chainWebpack 自定义打包入口
  7. 树莓派使用STEP7:安装wiringPi硬件外设驱动C库
  8. 【java】java 定时任务线程池 ScheduledThreadPoolExecutor 源码阅读
  9. 卡巴斯基称新型黑客雇佣组织正在攻击欧洲律所
  10. 简单的redis使用watch完成秒杀抢购功能
  11. 获取SD卡上 未安装 APK文件信息
  12. Hyperledger Fabric教程(4)-- byfn.sh分析-docker-compose-cli.yaml
  13. YAML_06 playbook从上往下顺序执行,若报错,不提示,继续往下执行
  14. 这几天阅读的shadowgun的几个shader
  15. 双碑零基础法语学习 学习法语要知道哪些法语常识?
  16. 根域名服务器作用,域名系统的主要功能是什么?域名系统中的本地域名服务器、根域名服务器、顶级域名 - 问答库...
  17. Maya_to_Unity工作流程
  18. 滑块逃脱_逃脱测试的丛林:从夹具到断言的捷径
  19. 服务网关-Zuul(二)
  20. android 生成kml,Android模拟GPS数据生成kml和nmea文件

热门文章

  1. 宁波市第一医院附近的房屋调研
  2. Unity导出视频/截图
  3. <郝斌C语言自学教程>
  4. Photoshop Resource(PS网站资源)
  5. 解决电脑安装mathtype后microsoft office 2016的.ppt文件打不开问题
  6. Spark面试题(二)
  7. 常见的图片比例有哪些?App中不同图片比例适用场景
  8. 老照片怎么修复?模糊照片如何变清晰?试试这些方法
  9. 手机扫描计数器有哪些?实用扫描计数软件分享给你
  10. 爬虫07 爬取阿里旅行特价机票