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的Django框架下管理站点的基本方法
Jul 17 Python
Python中进程和线程的区别详解
Oct 29 Python
Python reduce()函数的用法小结
Nov 15 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 Python
TensorFlow数据输入的方法示例
Jun 19 Python
Python动态生成多维数组的方法示例
Aug 09 Python
python文件写入write()的操作
May 14 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
python实现小世界网络生成
Nov 21 Python
记录模型训练时loss值的变化情况
Jun 16 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
Jan 28 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
如何将数据从文本导入到mysql
2006/10/09 PHP
PHP中的日期处理方法集锦
2007/01/02 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
初识laravel5
2015/03/02 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
Vue的Class与Style绑定的方法
2017/09/01 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
vue-devtools的安装步骤
2018/04/23 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
Python中map和列表推导效率比较实例分析
2015/06/17 Python
使用Python实现企业微信的自动打卡功能
2019/04/30 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
实习自我鉴定模板
2013/09/28 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
党员个人年度总结
2015/02/14 职场文书
高中政治教师教学反思
2016/02/23 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
创业计划书之烤红薯
2019/09/26 职场文书