python批量改后缀文件名

本文介绍如何使用Python脚本处理图像文件,通过os模块遍历images目录,将所有.tif文件转换为.jpg格式。代码中涉及文件路径操作和os.rename方法,适合对文件格式转换有一定需求的开发者阅读。

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

遇到问题
在处理数据的时候想把.tif全部转化成.jpg后缀。


import os
files = os.listdir("images")#获取当前目录下的文件
for filename in files:
    portion = os.path.splitext(filename)#将文件名拆成名字和后缀
    if portion[1] == ".tif":#关于后缀
        newname = portion[0] + ".jpg"
        os.rename(filename, newname)#修改

代码涉及到文件目录
为了便于理解我们分部打印一下运行结果,首先看一下我所遍历的images文件的目录。
在这里插入图片描述
代码详细讲解

portion = os.path.splitext(filename)#将文件名拆成名字和后缀
print(portion)

os.path.splitext(filename)这个方法将文件名拆成名称和后缀并存放到一个元组中,我们打印来看运行出来的结果。
在这里插入图片描述
这里portion就是一个元组的形式,portion[0]得到的是文件的名称,portion[1]得到的是文件的后缀名。

 if portion[1] == ".tif":#关于后缀
        newname = portion[0] + ".jpg"
        print(newname)

这里的判断形式,如果portion[1]也就是后缀为‘.tif’,我们取出名称和新的后缀连接。我们打印出来看一下。
在这里插入图片描述

### 使用Python批量文件扩展名 为了实现批量修改文件后缀名的功能,可以利用Python中的`os`模块来操作文件系统。具体来说,通过遍历指定目录下的所有文件并逐一检查其后缀名来进行替换。 #### 方法一:基于 `os.listdir()` 和字符串处理 这种方法适用于简单的场景,即只需要变特定目录内顶层文件的后缀而不涉及子目录的情况: ```python import os def change_extension_in_folder(folder_path, old_ext, new_ext): for filename in os.listdir(folder_path): # 获取目标文件夹内的所有文件名 if not filename.endswith(old_ext): # 如果不是我们要找的那种类型的文件就跳过 continue base = os.path.splitext(filename)[0] # 去掉旧的扩展名部分 new_name = f"{base}{new_ext}" # 添加新的扩展名 full_old_file = os.path.join(folder_path, filename) full_new_file = os.path.join(folder_path, new_name) try: os.rename(full_old_file, full_new_file) # 尝试重命名文件 print(f'Successfully renamed "{filename}" to "{new_name}".') except Exception as e: print(f'Failed to rename "{filename}": {str(e)}') change_extension_in_folder('your_directory', '.txt', '.md') # 修改 your_directory 路径以及所需转换前后缀 ``` 此方法仅限于同一层文件的操作,并且相对直观易懂[^1]。 #### 方法二:递归遍历整个目录结构(含子文件夹) 当需要更深入地访问包含多级嵌套子文件夹的大规模项目时,则应该考虑采用更为强大的工具如`os.walk()`. 这样不仅可以一次性完成大量文件的批量化更新,而且还能更好地控制程序逻辑: ```python import os def recursive_change_extensions(root_dir, old_ext, new_ext): for root, dirs, files in os.walk(root_dir): # 遍历根目录及其所有的子目录 for file in files: # 对每一个找到的文件做进一步判断 if file.lower().endswith(old_ext.lower()): # 不区分大小写比较后缀名 filepath = os.path.join(root, file) noext_filename = os.path.splitext(file)[0] target_filepath = os.path.join(root, f'{noext_filename}{new_ext}') try: os.replace(filepath, target_filepath) print(f'Renamed:\n{filepath}\nto\n{target_filepath}\n---') except OSError as err: print(f"Error renaming '{file}'\nDetails:{err}") recursive_change_extensions('/path/to/parent/folder/', '.jpg', '.jpeg') # 设置参数以适应实际需求 ``` 上述代码片段展示了如何使用`os.walk()`函数迭代地查找并写给定路径下所有符合条件的文件名称[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值