您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:Python 批量修改文件名

51自学网 2020-11-27 15:24:36
  python
这篇教程Python 批量修改文件名写得很实用,希望能帮到您。

利用 Python 批量修改文件名

开发的第一步,首先得熟悉脚本中使用的模块函数,废话不多说,开干!

1 函数介绍

1.1 os 模块

(1)os.lisdir()

>>> import os
>>> print(os.listdir())
['.env', 'rename.py', '.rename.py.swp']

此函数的作用即列出指定目录下的所有文件与目录的名,并以列表形式展现。

(2)os.path.splitext()

>>> import os
>>> print(os.path.splitext('rename.py'))
('rename', '.py')

在函数中指定一个文件名,用于分割文件名与后缀,结果存储于元组中

(3)os.path.join()

>>> import os
>>> print(os.path.join('/etc','nginx','nginx.conf'))
/etc/nginx/nginx.conf

将函数中的目录、文件组合成一个路径

(4)os.rename()

>>> import os
>>> os.rename('src','dest') # src 为原文件名,dest 为目标文件名

将目录或文件重命名

1.2 argparse 模块

​ Python 中内置模块,用于解析给出的函数参数,生成有用信息。

# argparse 模块示例源码
[root@localhost Python]# cat test.py
import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))
print(args.integers)

# 使用示例
[root@localhost Python]# python test.py -h
usage: test.py [-h] [--sum] N [N ...]

Process some integers.

positional arguments:
  N           an integer for the accumulator

optional arguments:
  -h, --help  show this help message and exit
  --sum       sum the integers (default: find the max)

[root@localhost Python]# python test.py 123 45 8 --sum
176	# 求和后的值
[123, 45, 8]
[root@localhost Python]# python test.py 123 45 8
123		# 未添加 sum 参数,默认显示参数中最大值,对应 add_argument 的 default=max
[123, 45, 8]

# 示例摘自链接:https://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html

​ argparse 模块的使用分为四步走,模块导入 -> ArgumentParser 创建对象 -> add_argument 添加参数 -> parse_args 调用

add_argument 函数中部分参数含义:

metavar		# 在 usage 中显示的参数名称
type		  # 接收到的参数,需转换成的目标类型
nargs			# 表示参数个数,上例使用 +,代表有1个或多个参数
help			# usage 中显示的参数帮助信息
dest			# 可用此参数重定义的值访问参数(args.accumulate(args.integers)),基于上面示例

2 脚本文件

import argparse,os

# 解析参数,并生成 usage 提示,-h 显示帮助
def parse():
    parser = argparse.ArgumentParser(description='批量修改文件名')
    parser.add_argument('target_dir', metavar='TARGET_DIR', type=str, nargs=1, help='需批量修改文件所在目录')
    parser.add_argument('old_ext', metavar='OLD_EXT', type=str, nargs=1, help='旧文件后缀')
    parser.add_argument('new_ext', metavar='NEW_EXT', type=str, nargs=1, help='新文件后缀')
    return parser

def filename_modify(target_dir,old_ext,new_ext):
    for filename in os.listdir(target_dir):
        file = os.path.splitext(filename)    # 将文件名与后缀分割开
        file_ext = file[1]  # 获得旧后缀

        if old_ext == file_ext:		# 查看此目录中是否有需修改的旧后缀文件
            newname = file[0] + new_ext

            # 文件或目录重命名
            os.rename(
              os.path.join(target_dir, filename),
              os.path.join(target_dir, newname)
            )

def main():
    parser = parse()
    args = vars(parser.parse_args())
    work_dir = args['target_dir'][0]
    old_ext = args['old_ext'][0]
    new_ext = args['new_ext'][0]

    if old_ext[0] != '.':
        old_ext = '.' + old_ext
    if new_ext[0] != '.':
        new_ext = '.' + new_ext

    filename_modify(work_dir,old_ext,new_ext)

if __name__ == '__main__':
    main()

main 函数中,args的值类似如下内容

python rename.py /root/Test txt py
{'work_dir': ['/root/Test'], 'old_ext': ['txt'], 'new_ext': ['py']}

因此,在 main 中,第一个索引 0 取的值为运行的命令行参数(列表),第二个索引值 0 用于判断带参数运行的文件后缀参数是否带有点


python批量更改文件名并编号
混淆矩阵可视化
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1