首页 > 其他分享 >(MJ处理)第一个下划线转逗号,剩下的转空格

(MJ处理)第一个下划线转逗号,剩下的转空格

时间:2023-12-19 22:00:42浏览次数:22  
标签:文件 下划线 MJ 逗号 file new directory path os

在处理大量文件时,手动进行文件重命名和删除特定类型文件通常是耗时且易出错的。为了提高效率和准确性,我开发了一个Python脚本,这个脚本可以自动化执行这些常见的文件管理任务。以下是脚本的主要功能和操作流程:

功能概述

  1. 目录备份

    • 在进行任何文件操作之前,脚本会自动创建指定目录的备份。这一步骤是为了防止在文件处理过程中发生意外,从而保护原始数据。
  2. 文件重命名

    • 对于图片文件(支持.png.jpg.jpeg.gif格式),脚本会将文件名中的第一个下划线(_)替换为逗号加空格(, ),其余下划线替换为空格。这一处理方式旨在改善文件命名的可读性,特别是对于那些包含多个下划线的文件名。
  3. 删除特定类型文件

    • 脚本会自动删除所有.txt(文本文件)和.xlsx(Excel电子表格文件)。这一功能适用于清理不需要的文件类型,从而整理出更干净的目录结构。

操作流程

  1. 用户输入

    • 用户通过命令行界面输入需要处理的目录路径。
  2. 检查目录存在性

    • 脚本会首先检查用户指定的目录是否存在,以防止尝试访问不存在的目录。
  3. 创建目录备份

    • 在进行任何修改之前,脚本会自动在指定目录中创建一个名为_backup的子目录,用于存放原始数据的备份。
  4. 重命名图片文件

    • 在备份目录中,脚本将遍历所有图片文件,并按照上述规则进行重命名。
  5. 删除特定类型文件

    • 同样在备份目录中,脚本将查找并删除所有.txt.xlsx文件。
  6. 操作完成提示

    • 完成所有操作后,脚本会输出完成提示,告知用户已完成文件处理。

适用场景

这个脚本特别适合于需要快速整理大量图片文件、统一文件命名格式,并删除不必要文件的场景。它通过自动化这些常见的文件管理任务,可以节省大量的时间和精力,同时降低人工操作错误的风险。无论是个人用户还是企业用户,都可以从中受益。

 
import os
import shutil

def copy_directory(src, dst):
    """复制 src 目录到 dst 目录。"""
    try:
        shutil.copytree(src, dst)
    except FileExistsError:
        print(f"备份目录 '{dst}' 已存在。")

def rename_image_files(directory):
    """重命名图片文件,第一个下划线转换为逗号加空格,其他下划线转换为空格。"""
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
                parts = file.split('_')
                if len(parts) > 1:
                    new_file_name = parts[0] + ', ' + ' '.join(parts[1:])
                else:
                    new_file_name = file

                if new_file_name != file:
                    original_file_path = os.path.join(root, file)
                    new_file_path = os.path.join(root, new_file_name)
                    increment = 1
                    while os.path.exists(new_file_path):
                        file_name, file_extension = os.path.splitext(new_file_name)
                        new_file_name = f"{file_name} ({increment}){file_extension}"
                        new_file_path = os.path.join(root, new_file_name)
                        increment += 1
                    os.rename(original_file_path, new_file_path)
                    print(f"文件 {original_file_path} 已重命名为 {new_file_path}")

def delete_specified_files(directory):
    """删除所有txt和excel文件。"""
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.lower().endswith(('.txt', '.xlsx')):
                os.remove(os.path.join(root, file))
                print(f"文件 {file} 已删除。")

def main():
    input_directory = input("请输入要处理的目录路径: ")
    if not os.path.exists(input_directory):
        print(f"指定的目录 {input_directory} 不存在。")
        return

    backup_directory = os.path.join(input_directory, "_backup")
    print(f"正在创建备份目录: {backup_directory}")
    copy_directory(input_directory, backup_directory)

    print("正在重命名备份目录中的图片文件...")
    rename_image_files(backup_directory)

    print("正在删除备份目录中的txt和excel文件...")
    delete_specified_files(backup_directory)

    print("操作完成。")

if __name__ == "__main__":
    main()

 

标签:文件,下划线,MJ,逗号,file,new,directory,path,os
From: https://www.cnblogs.com/zly324/p/17914904.html

相关文章

  • (精品)根据文件夹内的txt文本标题处理文件夹MJ数据
    功能介绍这个脚本是一个自动化的文件重命名工具,专门用于重命名图片文件。其主要功能如下:深度遍历指定目录:脚本能够遍历指定目录下的所有子文件夹,进行深度搜索。检测文本文件作为命名前缀:对于每个子文件夹,脚本会查找第一个.txt文件,并使用其文件名(不包括扩展名.txt)作为图片文......
  • MJ数据处理:读取txt版
    读取文件夹内的txt名称,并根据该名称将其批量修改importosimportreUNWANTED_UNITS=["undefined","皮皮","zly324"]IMAGE_EXTENSIONS=[".jpg",".jpeg",".png",".gif",".bmp",".tiff"]......
  • cesiumjs 点云
       用于提高细节细化级别的最大屏幕空间错误。该值有助于确定瓦片何时细化到其子代,因此在平衡性能和视觉质量方面发挥着重要作用。瓦片的屏幕空间误差大致相当于如果在瓦片的位置渲染半径等于瓦片几何误差的球体,则绘制的像素宽度。如果此值超过maximumScreenSpaceError......
  • SQL将多个结果集合并为一个结果,每个结果以逗号隔开
    场景描述:假设一张表有列A查询出的结果 A小张小明小红需要返回结果为:小张,小明,小红实现步骤:需要使用到两个函数,分别是forxmlPath(''),Stuff(p1,p2,p3,p4)函数1:使用实例select','+Afrom[tablename]forxmlPath('')返回结果:,小张,小明,小红通过返回结......
  • python在word文件指定的文字下划线
    #coding:utf-8importosfromwin32com.clientimportDispatchdefget_string_index(substring,string):"""获取同一字符串中的多个相同字符串的起始索引:paramsubstring:需查找的字符串:paramstring:被查找的字符串:return:"""in......
  • 7、oracle迁移到postgres-逗号拼接函数listagg与string_agg
    oracle迁移到postgres-逗号拼接函数listagg与string_aggoracle中的listagg函数与postgres中的string_agg函数都可以实现逗号拼接字符1、listagg函数SELECTt.id,listagg(字段1,',')withinGROUP(ORDERBY字段1)ascheck_msg2FROMdual;within......
  • Python 中的单下划线和双下划线
    哈喽大家好,我是咸鱼当我们在学习Python的时候,可能会经常遇到单下划线_和双下划线__这两种命名方式单下划线_和双下划线__不仅仅是只是一种简单的命名习惯,它们在Python中有着特殊的含义,对于代码的可读性和功能实现有着关键的作用。那么今天我们来看一看在Python......
  • 基于双下划线的跨表查询 进阶连续跨表查询
    基于双下划线的跨表查询:#连表查询#基于对象的跨表查询,先查对象,通过对象再去查另一个对象(正向:字段名,反向:表名小写/表名小写_set.all())#地址为山东的作者写的所有书#author_detail=models.AuthorDetail.objects.get(addr='山东')#author=author_detail.autho......
  • 基于双下划线的模糊查询
    #1价格在[100,200,300]这个范围内Book.objects.filter(price__in=[100,200,300])#2大于,小于,大于等于,小于等于Book.objects.filter(price__gt=100)Book.objects.filter(price__lt=100)Book.objects.filter(price__gte=100)Book.objects.filter(price__lte=100)#3范围Book.obje......
  • 详解Python单下划线和双下划线
    一、单下划线1.命名约定。在Python中,单下划线作为命名约定,用于表示某个变量、方法或属性是内部使用的或具有特定含义,但不希望在外部直接访问。2.临时变量。在一些情况下,我们可能只需要临时使用某个变量,而不关心它的具体值。此时,可以使用单下划线作为变量名,表示它是一个无关紧要......