Python如何给文件按顺序重命名

本文介绍了一种使用Python进行图片批量重命名的方法。该方法通过遍历指定文件夹内的.tif图片,将其名称转换为整数并排序,然后按照一定格式重新命名。此外,还提供了一种更高级的重命名方式,适用于.jpg格式的图片。

思路:先遍历文件夹,因为遍历顺序可能不同,所以要把文件转换为整形,排序之后,在重命名.代码如下:
机器学习批量处理图片可能会用到

基本方法:

import os
path='/home/no1/Desktop/python_program/rename_file'
file_1=[file[:-4] for file in os.listdir(path) if file[-4:]=='.tif']
for index , name  in enumerate(file_1):
    file_1[index]=int(name)
file_2=sorted(file_1)
i=0
for file in file_2:
    if len(str(file))<5:
        newname='%05d'%(i)+'.tif'
        i+=1
        os.rename(os.path.join(path,str(file)+'.tif'),os.path.join(path,newname))
        with open('filerename.txt','a') as f:
            f.write(str(file)+'>>>>>>>>>>>>>>'+newname+'\n')
            f.close

高级用法:

import glob
import os
def get_name(path):
    name, _ = os.path.splitext(os.path.basename(path))
    return name

input_paths = glob.glob(os.path.join('images', "*.jpg"))

input_paths1 = sorted(input_paths, key=lambda path1: int(get_name(path1)))
### 使用Python实现文件批量重命名 #### 方法概述 为了实现文件的批量重命名,可以利用Python中的`os`模块以及正则表达式模块`re`。这些工具能够帮助处理各种复杂的文件名模式匹配和修改需求[^4]。 #### 示例代码展示 下面是一个简单的例子,展示了如何编写一个Python脚本来批量更改指定目录下所有文件的名字: ```python import os from pathlib import Path def batch_rename_files(directory, prefix=""): """ 批量重命名给定目录内的文件. 参数: directory (str): 要操作的目标文件夹路径. prefix (str): 新文件名前缀,默认为空字符串. """ path = Path(directory) for index, filename in enumerate(path.iterdir(), 1): if not filename.is_dir(): # 只针对文件执行重命名操作 ext = ''.join(Path(filename).suffixes) # 获取原始扩展名 new_name = f"{prefix}{index:03d}{ext}" # 构建新的文件名称 try: filename.rename(path / new_name) print(f"成功将 '{filename.name}' 改名为 '{new_name}'.") except Exception as e: print(f"无法改名 '{filename.name}', 错误原因:{e}") if __name__ == "__main__": dir_to_process = input("请输入待处理的文件夹路径:") pre = input("输入新文件名前缀(可选): ") batch_rename_files(dir_to_process, pre or "") ``` 此段程序会询问用户想要处理哪个文件夹,并允许设置一个新的文件名前缀(如果有的话)。它会对该文件夹内所有的非子文件夹条目按照顺序编号并应用所提供的前缀进行重命名[^5]。 #### 关键点解释 - `Path()` 是来自标准库`pathlib`的一个类实例,用来简化对文件系统的访问。 - `enumerate()` 函数用于迭代时自动计数;这里是从1开始计算每个文件的位置索引。 - `{index:03d}` 表达式的含义是在整型变量前面补零直到达到三位长度。 - 当尝试更改变现有文件名时,使用了异常捕获机制来防止潜在错误中断整个过程[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值