Python实现批量更换指定目录下文件扩展名的方法

896次阅读  |  发布于5年以前

本文实例讲述了Python实现批量更换指定目录下文件扩展名的方法。分享给大家供大家参考,具体如下:


    #encoding=utf-8
    #author: walker
    #date: 2013-12-06
    #function: 深度遍历指定目录,更换指定扩展名
    import os
    import os.path
    #读入指定目录并转换为绝对路径
    rootdir = raw_input('root dir:\n')
    rootdir = os.path.abspath(rootdir)
    print('absolute path:\n' + rootdir)
    #读入原扩展名并标准化
    old_ext = raw_input('old extension:\n')
    old_ext = old_ext.strip()
    if old_ext[0] != '.':
      old_ext = '.' + old_ext
    #读入新扩展名并标准化
    new_ext = raw_input('new extension:\n')
    new_ext = new_ext.strip()
    if new_ext[0] != '.':
      new_ext = '.' + new_ext
    for parent, dirnames, filenames in os.walk(rootdir):
      for filename in filenames:
        pathfile = os.path.join(parent, filename)
        if pathfile.endswith(old_ext):
          new_pathfile = os.path.splitext(pathfile)[0] + new_ext
          print('=======================================================')
          print(pathfile)
          print('-------------------------------------------------------')
          print(new_pathfile)
          print('=======================================================')
          os.rename(pathfile, new_pathfile)

PS:上述功能一个shell命令也可以实现


    #将后缀.ini换成.txt
    #路径名可以是相对路径或绝对路径
    find 路径名 | rename 's/\.ini$/\.txt/'

注意,上面的rename命令是perl版的rename命令。

PS2:scandir的兼容代码。


    # Use the built-in version of scandir/walk if possible, otherwise
    # use the scandir module version
    try:
      from os import scandir, walk  #python3.5+
    except ImportError:
      from scandir import scandir, walk #python3.4-

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python URL操作技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8