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中将阿拉伯数字转换成中文的实现代码
May 19 Python
python3使用tkinter实现ui界面简单实例
Jan 10 Python
简单谈谈Python流程控制语句
Dec 04 Python
Python输出各行命令详解
Feb 01 Python
Python中利用xpath解析HTML的方法
May 14 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
通过实例解析Python调用json模块
Dec 11 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
Sep 20 Python
Python根据字符串调用函数过程解析
Nov 05 Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 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中for循环语句的几种变型
2006/11/26 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
php use和include区别总结
2019/10/13 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
python MySQLdb使用教程详解
2018/03/20 Python
Python变量赋值的秘密分享
2018/04/03 Python
python开发游戏的前期准备
2019/05/05 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
python爬虫工具例举说明
2020/11/30 Python
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
幼儿园中班教师寄语
2014/04/03 职场文书
大专毕业生求职信
2014/07/05 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
小学生暑假安全公约
2015/07/14 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书