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快速排序代码实例
Nov 21 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
scrapy爬虫完整实例
Jan 25 Python
Python实现的购物车功能示例
Feb 11 Python
python 修改本地网络配置的方法
Aug 14 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 Python
pandas分批读取大数据集教程
Jun 06 Python
python如何使用代码运行助手
Jul 03 Python
python文件编写好后如何实践
Jul 07 Python
Python词云的正确实现方法实例
May 08 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
正则表达式语法
2006/10/09 Javascript
php unset全局变量运用问题的深入解析
2013/06/17 PHP
浅析PHP绘图技术
2013/07/03 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
wxPython使用系统剪切板的方法
2015/06/16 Python
Python数据结构之单链表详解
2017/09/12 Python
Python学生信息管理系统修改版
2018/03/13 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
tensorflow 实现从checkpoint中获取graph信息
2020/02/10 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
python爬虫基础知识点整理
2020/06/02 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
抽象方法、抽象类怎样声明
2014/10/25 面试题
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
《湘夫人》教学反思
2014/02/21 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
优秀团员个人总结
2015/02/26 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL