python实用脚本(一)—— 批量修改目标文件夹下的文件名

2023-10-30

本期主题:
python重命名文件脚本,批量修改某一文件夹下的后缀名



1.代码

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# 批量修改文件扩展名

import argparse
import os

def batch_rename(work_dir, old_ext, new_ext):
    for filename in os.listdir(work_dir):
        print(filename)
        splite_file = os.path.splitext(filename)
        root_name, file_ext = splite_file
        # root_name = "hello"
        # print(root_name, file_ext)
        if old_ext == file_ext:
            # print("root_name is ", root_name)
            newfile = root_name + new_ext
            # print(newfile)
            # os.path.join(path1, path2) 是将path1和path2拼接在一起
            os.rename(os.path.join(work_dir, filename), os.path.join(work_dir, newfile))

    print("rename is done!")
    print(os.listdir(work_dir))

def get_parser():
    parser = argparse.ArgumentParser(
        description="use to change name in a directory"
    )
    parser.add_argument(
        "work_dir",
        metavar="WORK_DIR",
        type=str,
        nargs=1,
        help="the work dir",
    )
    parser.add_argument(
        "old_ext",
        metavar="OLD_EXT",
        type=str,
        nargs=1,
        help="old ext name",
    )
    parser.add_argument(
        "new_ext",
        metavar="NEW_EXT",
        type=str,
        nargs=1,
        help="new ext name",
    )
    return parser

def main():
    # parser = argparse.ArgumentParser()
    parser = get_parser()
    args = vars(parser.parse_args()) # vars()将args转成字典形式
    # print(type(args), type(args["work_dir"])) type分别是dict和list

    work_dir = args["work_dir"][0]
    # print(type(work_dir), work_dir)

    old_ext = args["old_ext"][0]
    if old_ext and old_ext[0] != ".":
        old_ext = "." + old_ext
    # print(type(old_ext), old_ext)

    new_ext = args["new_ext"][0]
    if new_ext and new_ext[0] != ".":
        new_ext = "." + new_ext

    batch_rename(work_dir, old_ext, new_ext)

if __name__ == "__main__":
    main()

2.使用

//运行时提示:
jason@ubuntu:~/WorkSpace/5.Python/0.batch_rename$ python3 batch_rename.py -h
usage: batch_rename.py [-h] WORK_DIR OLD_EXT NEW_EXT

use to change name in a directory

positional arguments:
  WORK_DIR    the work dir
  OLD_EXT     old ext name
  NEW_EXT     new ext name

optional arguments:
  -h, --help  show this help message and exit

work_dir是工作目录
old_ext是旧的扩展名
new_ext是需要转换的新的扩展名

在rename_dir目录下有3个文件

jason@ubuntu:~/WorkSpace/5.Python/0.batch_rename$ ls rename_dir/
a.tmp b.tmp c.tmp
jason@ubuntu:~/WorkSpace/5.Python/0.batch_rename$ python3 batch_rename.py ./rename_dir .tmp .txt
c.tmp
b.tmp
a.tmp
rename is done!
[‘c.txt’, ‘a.txt’, ‘b.txt’]

3.简单解析

argparse实际上是python标准库中的命令行解析模块。
参考我们使用的ls命令

  • ls即使在运行时没提供任何选项,默认会输出当前文件夹包含的文件和文件夹;
  • ls xxx,其中的这个xxx代表是位置参数
  • ls -l,这个-l是可选参数

我们上面的例子中,python脚本后面就是跟的三个位置参数,关于argparse的详细解释,参考官方教程:
Argparse 教程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python实用脚本(一)—— 批量修改目标文件夹下的文件名 的相关文章

随机推荐

  • 山石岩读丨前沿领域探析——汽车CAN总线协议详解及攻击面分析

    1 CAN总线的基本概念以及由来 CAN Controller Area Network 总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线 它起初用于实现汽车内ECU之间可靠的通信 后因其简单实用可靠等特点 而广泛应用于工
  • 解读HashMap中put方法的源码

    解析hashMap的put方法是如何存储一个键值 一 put方法 代码1 1 V put K key V value 方法 public V put K key V value return putVal hash key key valu
  • Java 面向对象之多态

    目录 1 接口 1 1 接口中成员的访问特点 1 2 默认方法 1 3 静态方法 1 4 私有方法 1 5 小结 2 多态 2 1 多态中成员的访问特点 2 2 多态的好处和弊端 2 3 多态中的转型 3 内部类 3 1 成员内部类 3 2
  • SpringBoot框架总结

    SpringBoot框架总结 一 SpringBoot框架的概念 1 传统框架的弊端 例如传统的SSM框架整合了MyBatis Spring SpringMVC框架 但其需要繁琐且重复的配置使程序员很是痛苦 2 SpringBoot框架 S
  • ros中编译release版本

    catkin build cmake args DCMAKE BUILD TYPE Release
  • Java做一个进制转换小工具

    通过swing和awt实现的一个简单的进制转换工具 可以进行数之间的进制转换 只有两个类 所有代码都放在https github com 13337356453 BHD Converter 可自行下载 因为某些特殊的原因 没有把窗口弄得更漂
  • Selenium中的断言(python篇)

    Selenium常用的断言包括 页面属性断言 断言标题 url或页面源码中是否包含或不包含特定字符 元素存在断言 断言指定元素存在 图片及链接断言 断言图片正常显示 链接可以正常打开 页面属性断言 这是最常用的断言方式 可以用来断言页面是否
  • 李开复创业--创新工场未来的前景是怎样?

    创新工场现在是房子不小 人不多 这个星期我们招聘了第七个人 节目还没开始 李开复对本报道如是说 十一 长假 他赶赴美国与投资商谈融资 同时不忘到两所知名高校演讲招揽人才 现在 刚刚满月的 创新工场 未来的前景是怎样 招聘人才一个月 招揽人才
  • 面试题10道02 2021.11.26

    1 什么是HTTP报文 Http报文就是客户端和服务端之间传送的数据块 2 HTTP报文由哪三部分组成 HTTP报文由起始行 头部 主体组成 其中起始行是对该报文进行的描述 头部是对报文的属性进行的描述 主体则是数据的内容 3 HTTP报文
  • Movidius神经计算棒5-编译ncsdk

    上面是我的微信和QQ群 欢迎新朋友的加入 这里有个小提示 先把硬件接上电脑 否则会编译报错 然后最好不要用USB HUB线 make install 完成之后如下所示 make examples 完成之后是这样的 测试
  • 希尔排序详解

    1 概述 希尔排序 Shell s Sort 是插入排序的一种又称 缩小增量排序 Diminishing Increment Sort 是直接插入排序算法的一种更高效的改进版本 希尔排序是非稳定排序算法 该方法因 D L Shell 于 1
  • scrapy中关于Splash的使用

    为什么要学习Splash 我们经常使用scrapy框架编写爬虫代码 站在巨人的肩膀上感觉很好 但是一旦遇到网站用JavaScript动态渲染 scrapy就显得有些力不从心了 我们了解的selenium可以完成动态加载 返回浏览器渲染后的页
  • python字符串长度输出_python输出指定长度的字符串

    import io import sys import random import string def generate random str randomlength 16 生成一个指定长度的随机字符串 其中 string digits
  • 基本数据类型对象包装类

    基本数据类型对象包装类 为了方便操作基本数据类型值 将其封装成了对象 在对象中定义了属性和行为丰富了该数据的操作 用于描述该对象的类就称为基本数据类型包装类 byte Byte short Short int Integer long Lo
  • IDEA自带plantUML绘制时序图

    一 时序图的作用 时序图 Sequence Diagram 又名序列图 循序图 是一种UML交互图 它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作 它可以表示用例的行为顺序 当执行一个用例行为时 其中的每条消息对应一个类操作
  • Unix环境高级编程环境搭建

    在网上下载书中源代码 点此连接 点击打开链接 解压文件按 cd apue 3e make 在 make 的这个过程中一般会出错 后面显示 can t find lbsd 解决办法是添加 libbsd a 的静态链接库 指令如下 ub系统 s
  • echarts x轴 type=‘time‘

    关于x轴的设置在开发中是很常见的操作 如果只是设置一些定死的数据 那么就很简单 但是如果要设置某个可变的 且数量很多的x轴的话 不是一件很简单的事情了 比如我最近在工作中就遇到了 下面来和大家一起分享一下 开发需求如下 一个折线图表 默认显
  • 团队工具

    worktile Teambition 今目标 钉钉
  • 【机器学习】- 支持向量机

    预备知识 1 法向量 Wx b 0 w是什么 Wx b 0是直线方程 其中w表示法向量 法向量的指向由具体值确定 例如x y 2 0 法向量为 1 1 指向右上方 2 距离公式 3 函数间隔 当w确定的时候 距离的远近可以比较分子 也就是说
  • python实用脚本(一)—— 批量修改目标文件夹下的文件名

    本期主题 python重命名文件脚本 批量修改某一文件夹下的后缀名 脚本 1 代码 2 使用 3 简单解析 1 代码 usr bin python3 coding utf 8 批量修改文件扩展名 import argparse import