python实现遍历文件夹修改文件后缀


Posted in Python onAugust 28, 2018

本文实例为大家分享了python实现遍历文件夹修改文件后缀的具体代码,供大家参考,具体内容如下

用法 python Modifer.py ./ -fp java xml

# coding:utf-8
# Build by LandGrey 2016-05-27

import os
import sys

#批量修改路径与文件名
def Modifyprefix(Path,oldcontent,newcontent):
  all_file_list = os.listdir(Path)  #列出指定目录下的所有文件
  for file_name in all_file_list:
    currentdir =os.path.join(Path, file_name) #连接指定的路径和文件名or文件夹名字
    if os.path.isdir(currentdir):  #如果当前路径是文件夹,则跳过
      Modifyprefix(currentdir,oldcontent,newcontent)
    fname = os.path.splitext(file_name)[0] #分解出当前的文件路径名字
    ftype = os.path.splitext(file_name)[1] #分解出当前的文件扩展名
    if oldcontent in fname:
      fdcount[0]+=1
      replname =fname.replace(oldcontent,newcontent) #将原文件名中的'oldcontent'字符串内容全替换为'newcontent'字符串内容
      newname = os.path.join(Path,replname+ftype)  #文件路径与新的文件名字+原来的扩展名
      os.rename(currentdir,newname) #重命名

#批量修改文件扩展名(后缀)
def Modifypostfix(Path,oldftype,newftype):
  all_file_list = os.listdir(Path)     #列出指定目录下的所有文件
  for file_name in all_file_list:
    currentdir =os.path.join(Path,file_name)
    if os.path.isdir(currentdir):          #迭代
      Modifypostfix(currentdir,oldftype,newftype)
    fname = os.path.splitext(file_name)[0]
    ftype = os.path.splitext(file_name)[1]
    if oldftype in ftype[1:]: #找到需要修改的扩展名
      typecount[0]+=1
      ftype=ftype.replace(oldftype,newftype)
      newname = os.path.join(Path,fname+ftype) #文件路径与原来的文件名字+新的扩展名
      os.rename(currentdir,newname)        #重命名

def Useage():
  print unicode("\n[+] 用法: python Modifer.py [指定目录] [选项] [参数1] [参数2]","utf-8")
  print unicode("[+] 选项 [-fd] :批量修改目录和文件名        [参数1]: 需要替换的字符   [参数2]:替换字符串","utf-8")
  print unicode("[+] 选项 [-fp] :批量修改文件后缀名         [参数1]: 原后缀名      [参数2]:需要替换的后缀名","utf-8")
  print unicode("[+] 选项 [-all] :批量修改目录、文件名和文件后缀名  [参数1]: 需要替换的字符部分 [参数2]:替换字符串","utf-8")
  print unicode(r"[+] 用法示例:python Modifer.py D:\files -fp txt data","utf-8")

if __name__=="__main__":
  typecount=[0]
  fdcount=[0]
  if len(sys.argv)==2 and "-h" in sys.argv[1]:
    Useage()
    sys.exit()
  elif len(sys.argv) !=5:
    print unicode("\n[+] 参数错误 !\n","utf-8")
    print unicode("[+] 用 -h 或--help 参数查看Modifer.py用法","utf-8")
    sys.exit()
  elif os.path.isdir(sys.argv[1]) is False:
    print unicode("\n[+] 指定目录错误 ! 请检查输入路径是否正确,路径中不能有空格\n","utf-8")
    print unicode("[+] 用 -h 或--help 参数查看Modifer.py用法","utf-8")
    sys.exit()
  elif sys.argv[2]=="-fd":
    Modifyprefix(sys.argv[1],sys.argv[3],sys.argv[4])
    print unicode("\n[+] Modifer.py  Build by LandGrey","utf-8")
    print unicode("[+] 完成 !","utf-8")
    print unicode("[+] 共修改%s个目录和文件名"%fdcount[0],"utf-8")
  elif sys.argv[2]=="-fp":
    Modifypostfix(sys.argv[1],sys.argv[3],sys.argv[4])
    print unicode("\n[+] Modifer.py  Build by LandGrey","utf-8")
    print unicode("[+] 完成 !","utf-8")
    print unicode("[+] 共修改%s个后缀名"%typecount[0],"utf-8")
  elif sys.argv[2]=="-all":
    Modifypostfix(sys.argv[1],sys.argv[3],sys.argv[4])
    Modifyprefix(sys.argv[1],sys.argv[3],sys.argv[4])
    print unicode("\n[+] Modifer.py  Build by LandGrey","utf-8")
    print unicode("[+] 完成 !","utf-8")
    print unicode("[+] 共修改%s个目录名、文件名和后缀名"%(typecount[0]+fdcount[0]),"utf-8")
  else:
    print unicode("\n[+] 选项错误 !\n","utf-8")
    print unicode("[+] 用 -h 或--help 参数查看Modifer.py用法","utf-8")
    sys.exit()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python正则表达式re模块详解
Jun 25 Python
Python实现的检测web服务器健康状况的小程序
Sep 17 Python
简单使用Python自动生成文章
Dec 25 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
Python实现的单向循环链表功能示例
Nov 10 Python
使用python存储网页上的图片实例
May 22 Python
Python利用递归实现文件的复制方法
Oct 27 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Python绘制正余弦函数图像的方法
Aug 28 #Python
Python logging模块用法示例
Aug 28 #Python
Python异常处理操作实例详解
Aug 28 #Python
Python封装原理与实现方法详解
Aug 28 #Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 #Python
python中cPickle类使用方法详解
Aug 27 #Python
python散点图实例之随机漫步
Aug 27 #Python
You might like
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
js实现表格数据搜索
2020/08/09 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
jQuery实现带进度条的轮播图
2020/09/13 jQuery
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
tensorflow 实现数据类型转换
2020/02/17 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
管理科学大学生求职信
2013/11/13 职场文书
财务简历的自我评价
2014/03/05 职场文书
2015年个人思想总结
2015/03/09 职场文书
城南旧事观后感
2015/06/11 职场文书
立春观后感
2015/06/18 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android