基于Python对文件夹内文件名批量删减

该Python函数接收源目录、目标目录以及前缀和后缀长度作为参数,批量处理文件名,移除指定数量的前导和尾随字符,并将文件移动或复制到目标目录。如果文件名长度不足,则保持原样。函数使用os和shutil模块进行文件操作。
摘要由CSDN通过智能技术生成

这个函数是用于对指定文件夹内的文件名进行修改并输出到新的文件夹,程序通过输入参数,批量减去原文件名的前后固定字符数,并复制/移动到指定文件夹。
我写这个函数的原因是,我将一个文件夹提交给一个程序批量处理,但是处理后的文件中,每一个文件名前面都添加了一个编号,于是我就编写了这个函数用于还原文件名。

import os
import shutil

def modify_files(source_directory, target_directory, prefix=0, suffix=0, mode=False):
    """
    修改文件名并移动或复制文件。

    参数:
    source_directory: str, 源文件夹路径
    target_directory: str, 目标文件夹路径
    prefix: int, 需要删除的文件名前缀字符数量,默认为0
    suffix: int, 需要删除的除去文件扩展名的后缀字符数量,默认为0
    mode: bool, 模式选择,True 表示移动,False 表示复制,默认为复制

    返回: 无返回值
    """

    # 确保目标文件夹存在
    os.makedirs(target_directory, exist_ok=True)

    # 遍历源文件夹中的所有文件
    for filename in os.listdir(source_directory):
        # 获取文件扩展名
        extension = os.path.splitext(filename)[1]
        # 获取文件名主体部分
        base_name = os.path.splitext(filename)[0]
        # 检查文件名长度
        if len(base_name) < prefix + suffix:
            print(f"文件名 {filename} 长度不足,已保留原文件名。")
            new_filename = filename
        else:
            # 删除前缀和后缀
            new_filename = base_name[prefix:][:len(base_name[prefix:]) - suffix] + extension

        # 创建源文件和目标文件的完整路径
        old_file = os.path.join(source_directory, filename)
        new_file = os.path.join(target_directory, new_filename)
        # 根据模式选择移动或复制文件
        if mode:
            shutil.move(old_file, new_file)
        else:
            shutil.copy2(old_file, new_file)

# 使用例子
source_directory = '/path/to/source/directory'
target_directory = '/path/to/target/directory'
modify_files(source_directory, target_directory)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不咕鸟会咕咕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值