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 相关文章推荐
python3简单实现微信爬虫
Apr 09 Python
Python时间戳使用和相互转换详解
Dec 11 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
Python创建或生成列表的操作方法
Jun 19 Python
python 三元运算符使用解析
Sep 16 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
python加载自定义词典实例
Dec 06 Python
Transpose 数组行列转置的限制方式
Feb 11 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 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
用php过滤危险html代码的函数
2008/07/22 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
JavaScript 事件冒泡简介及应用
2010/01/11 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
js字符串转成JSON
2013/11/07 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
python 异常处理总结
2016/10/18 Python
Python内置函数OCT详解
2016/11/09 Python
python编写弹球游戏的实现代码
2018/03/12 Python
Django开发中复选框用法示例
2018/03/20 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
Python读取指定日期邮件的实例
2019/02/01 Python
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
开学季活动策划方案
2014/02/28 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
自主招生学校推荐信
2014/09/26 职场文书
2014年德育工作总结
2014/11/20 职场文书
用人单位聘用意向书
2015/05/11 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
pytorch Dropout过拟合的操作
2021/05/27 Python
Python基本的内置数据类型及使用方法
2022/04/13 Python
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS