python3 批量修改文件扩展名——递归

本文介绍了一种使用Python脚本批量修改文件扩展名的方法,并通过递归方式处理整个目录结构中的文件。该脚本适用于需要统一转换文件类型的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

'''
Created on 2017年9月28日

@author: kearney
'''

import os

def isFile(filePath):#修改文件扩展名
    filename=filePath.split('\\')[-1]#拆分文件路径获得文件名
    fatherPath=filePath.replace(filename,'')#获得父级路径
    split=os.path.splitext(filename)#拆分文件名和扩展名
    newname=split[0]+'.xls'#生成新文件名
    os.chdir(fatherPath)#改变当前工作目录到指定的路径
    os.rename(filename,newname)#文件重命名

def openDir(filePath):#递归文件夹
    pathDir=os.listdir(filePath)#返回包含的文件或文件夹的名字的列表
    for filename in pathDir:#遍历列表
        childPath=os.path.join(filePath,filename)
        #判断是否为文件夹
        if os.path.isfile(childPath):
            isFile(childPath)
        else:
            openDir(childPath)


rootDir=r'D:\\files\文件夹'#根目录
pathDir =  os.listdir(rootDir)#列出根目录下所有内容

for allDir in pathDir:#遍历列表
    filepath=os.path.join(rootDir,allDir)#文件路径合成
    
    #判断是否为文件夹
    if os.path.isfile(filepath):
        isFile(filepath)
    else:
        openDir(filepath)

 

posted on 2017-09-29 16:12 Gino森 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/kearney908/p/7611520.html

Python批量对图片进行重命名是一项常见的任务,尤其当你有大量需要组织和分类的照片时。下面是实现这一操作的一种简单方法:通过遍历指定目录下所有的图像文件,并按照一定的规则给它们重新命名。 为了更好地理解和实践这个过程,我们首先会引入必要的库——`os` 和 `glob`. 这两个标准库可以帮助我们在本地磁盘上查找特定类型的文件以及对其进行基本的操作如重命名等。 ### 步骤说明: #### 0. 准备工作 确保你已经有了一个放满待处理图片的文件夹路径,并确定你想将这些图片按什么样的规律重命名(例如增加序号、添加日期时间戳等) #### 1. 导入所需的模块 ```python import os from glob import glob ``` 这两个模块分别用于操作系统级别的交互 (`os`) 及通配符搜索 (`glob`). #### 2. 设置目标路径与模式匹配字符串 接下来设置你要处理的目标文件夹位置,然后定义出想要找寻的那种格式的所有文件名模板(即pattern)。这里假设我们要寻找当前目录及其子目录内的所有jpg/jpeg/png 文件: ```python # 将其替换为你自己的文件夹路径 path = r"./images/" patterns = ['*.jpg', '*.jpeg', '*.png'] files_grabbed = [] for pattern in patterns: files_grabbed.extend(glob(os.path.join(path, "**", pattern), recursive=True)) ``` > 注意: `r"..."` 前缀表示原始字符串字面量,在其中反斜杠不需要转义;此外使用了递归选项(`recursive=True`)让函数能够深入到各级子文件夹内搜查。 #### 3. 批量重命名 现在有了所有符合条件的图片列表`files_grabed`, 接下来就是逐个给予新名字的过程了。我们可以设定一些简单的策略来生成新的名称序列化编号或者加入其他元数据信息等等. 在这个例子中我们将简单地附加一个从零开始增长的小数点后三位数字作为每个文件的新标识符 (如果原有扩展名为'.JPG','.JPEG'或'.PNG') 并保持原有的文件类型不变 : ```python new_filenames = ["img_{:04d}.{}".format(i+1, file.split('.')[-1].lower()) for i, file in enumerate(files_grabbed)] for old_name, new_name in zip(files_grabbed, new_filenames): # 获取旧文件所在的具体位置 + 新文件名组成完整的绝对路径 full_new_path = os.path.dirname(old_name) + '/' + new_name print(f'Renaming {old_name} to {full_new_path}') try: if not os.path.exists(full_new_path): # 确保不会覆盖已有的同名文件 os.rename(old_name, full_new_path) else: print('Skipped:', full_new_path, 'already exists.') except Exception as e: print("Failed renaming {} due to error:".format(old_name), str(e)) ``` 以上代码片段实现了读取某个目录树结构中的全部图片资源并且依次赋予它们一个新的有序排列过的短小易记的名字形式。当然实际应用当中还可以依据需求调整具体的改名逻辑,比如基于创建时间和拍摄地点等因素。 希望这段解释对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值