python 批量修改文件名保留后3位

Python缩减文件夹长文件名代码

在日常办公过程中,可能需要对某个文件夹下长文件名进行缩减裁剪,便于查看,如保留3位作为文件名,代码如下:

import os
def rename_files_in_folder(folder_path):
    for filename in os.listdir(folder_path):
        if len(filename) > 7:  # 如果文件名需要保留3位,(需要加上.后缀的长度)加上4位后缀(如.doc),文件长度应该为7
            new_filename = filename[-7:]
            old_file = os.path.join(folder_path, filename)
            new_file = os.path.join(folder_path, new_filename)
            os.rename(old_file, new_file)
# 使用方法:将目标文件夹路径作为参数传入
rename_files_in_folder('.\\测试文件夹\\')

<think> 我们参考用户提供的多个站内引用,总结Python批量修改文件名的常见方法: 1. 使用os模块的listdir获取文件列表,然后使用rename进行重命名(引用[1][2][4]) 2. 可以使用pathlib模块(引用[3][5])进行面向对象的操作 3. 通常包含遍历文件、判断文件类型、构造新文件名、执行重命名等步骤 根据用户需求,重点在批量修改文件夹中的文件名(不包括子文件夹,除非特别说明)。我们参考提供的引用中的代码片段,给出一个通用的方法。 注意:用户引用[2]特别说明“只针对目标文件夹不包括子文件”,所以我们的方法也集中在当前文件夹。 我们将提供两种常用方法: 方法一:使用os模块(适用于大多数情况) 方法二:使用pathlib模块(更现代的方式) 步骤: 1. 确定要修改文件夹路径。 2. 获取该文件夹下所有文件(不包括子文件夹)。 3. 遍历每个文件,根据需求修改文件名(如替换部分字符串、添加前缀、添加后缀等)。 4. 使用重命名函数进行修改。 注意:为了避免重名冲突,建议先收集所有新文件名再执行重命名,或者先修改成临时文件名修改回来。但简单情况下,直接遍历修改通常可行。 我们参考引用[2]和[4]给出示例代码: 示例1:替换文件名中的部分字符串(引用[2]) 示例2:添加前缀(引用[4]) 另外,我们参考引用[5]提到有GUI版本,但这里我们只提供代码方法。 下面分别给出代码示例: </think> 以下是Python批量修改文件夹文件名的常用方法总结,基于您提供的引用信息: ### 方法1:使用os模块(基础修改) ```python import os def batch_rename(folder_path, old_str, new_str): """替换文件名中的指定字符串""" for filename in os.listdir(folder_path): if old_str in filename: old_path = os.path.join(folder_path, filename) new_path = os.path.join(folder_path, filename.replace(old_str, new_str)) os.rename(old_path, new_path) print(f"{filename} → {filename.replace(old_str, new_str)}") # 示例:将"报告_"替换为"2024报告_" batch_rename(r&#39;C:\Documents\Reports&#39;, &#39;报告_&#39;, &#39;2024报告_&#39;) ``` ### 方法2:添加前缀/后缀(引用[4]优化版) ```python import os def add_prefix_suffix(folder_path, prefix="", suffix=""): """添加统一前缀/后缀(保留原扩展名)""" for filename in os.listdir(folder_path): if os.path.isfile(os.path.join(folder_path, filename)): name, ext = os.path.splitext(filename) new_name = f"{prefix}{name}{suffix}{ext}" os.rename( os.path.join(folder_path, filename), os.path.join(folder_path, new_name) ) print(f"{filename} → {new_name}") # 示例:添加前缀"备份_"和后缀"_v2" add_prefix_suffix(r&#39;C:\Images&#39;, prefix="备份_", suffix="_v2") ``` ### 方法3:使用pathlib模块(现代方式,引用[3]) ```python from pathlib import Path def batch_rename_pathlib(folder_path, pattern): """使用正则表达式模式修改文件名""" folder = Path(folder_path) for file in folder.iterdir(): if file.is_file(): new_name = pattern.sub(&#39;NEW_&#39;, file.name) # 使用正则替换 file.rename(file.with_name(new_name)) print(f"{file.name} → {new_name}") # 示例:使用正则表达式替换 import re pattern = re.compile(r&#39;^OLD_&#39;) # 匹配以OLD_开头的文件名 batch_rename_pathlib(r&#39;C:\Data&#39;, pattern) ``` ### 关键注意事项: 1. **路径格式**:建议使用原始字符串 `r&#39;C:\path&#39;` 或双反斜杠 `&#39;C:\\path&#39;` 避免转义问题 2. **文件过滤**:使用 `if filename.endswith(&#39;.jpg&#39;)` 可限定特定扩展名文件 3. **子文件夹处理**:默认不处理子文件夹,若需要递归处理需使用 `os.walk()` 4. **安全措施**:操作前建议备份文件,避免不可逆修改 > 实际案例:将`C:\Photos`下所有`.jpg`文件添加日期前缀 > ```python > import datetime > today = datetime.date.today().strftime("%Y%m%d") > add_prefix_suffix(r&#39;C:\Photos&#39;, prefix=f"{today}_", file_types=[&#39;.jpg&#39;]) > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值