首页 > 其他分享 >(没啥大用)甄别图片中有问题的信息,并重命名

(没啥大用)甄别图片中有问题的信息,并重命名

时间:2023-12-23 22:11:27浏览次数:41  
标签:甄别 root 并重 path new 大用 os dir name

import os
import shutil
import re
from nltk.corpus import words

# 设置英文字典
word_list = set(words.words())


def is_valid_word(word):
    return word.lower() in word_list


def get_new_name(base, ext, root):
    counter = 0
    new_name = base + ext
    while os.path.exists(os.path.join(root, new_name)):  # 确保新名称不会导致冲突
        counter += 1
        new_name = base + f"({counter})" + ext
    return new_name


def process_image_name(name, x, root):
    parts = name.split(',')
    if len(parts) - 1 < x:
        return name  # 不改变原始文件名

    base, ext = os.path.splitext(parts[x])
    valid_words = [word for word in re.split(r'\s+|\W+|\d+', base) if is_valid_word(word)]
    if len(valid_words) == len(base.split()):  # 所有单词都有效
        return name
    else:
        # 删除字段A并添加后缀
        new_base = ','.join(parts[:x])
        return get_new_name(new_base, ext, root)


def copy_structure(src, dest):
    for dirpath, dirnames, filenames in os.walk(src):
        structure = os.path.join(dest, os.path.relpath(dirpath, src))
        if not os.path.isdir(structure):
            os.makedirs(structure)


def main(parent_dir_a, target_dir_b, x):
    parent_dir_c = target_dir_b + "-副本"
    copy_structure(parent_dir_a, parent_dir_c)  # 复制文件夹结构

    renamed_images = []  # 记录重命名的图片集合B
    for root, dirs, files in os.walk(parent_dir_a):
        for file in files:
            if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
                new_name = process_image_name(file, x, root)
                if new_name != file:
                    os.rename(os.path.join(root, file), os.path.join(root, new_name))
                    renamed_images.append((os.path.join(root, new_name),
                                           os.path.join(parent_dir_c, os.path.relpath(root, parent_dir_a), new_name)))

    for src, dest in renamed_images:  # 移动重命名的图片到父目录c
        shutil.move(src, dest)


if __name__ == "__main__":
    parent_dir_a = input("请输入父目录a(原始数据地址):")
    target_dir_b = input("请输入指定目录b(复制文件夹结构的目标位置):")
    x = int(input("请输入自然数X(处理第几个逗号后的内容):"))
    main(parent_dir_a, target_dir_b, x)

 

标签:甄别,root,并重,path,new,大用,os,dir,name
From: https://www.cnblogs.com/zly324/p/17923738.html

相关文章

  • 伪造网页数据(每个文件夹抽指定数量的图片并重命名)
    (承接"公共标,特殊标"的结构)1.对于指定父目录结构,每个文件夹抽指定数量的随机图片。importosimportshutilimportrandomdeffind_image_folders(parent_directory):#查找包含图片的文件夹image_folders=[]forroot,dirs,filesinos.walk(parent_direc......
  • jekenis删除构建历史并重置构建序号
    系统管理工具和动作-->脚本命令执行删除之前,现在已经构建了156次 输入脚本println(Jenkins.instance.getJobNames())//查看获取任务名列表//要重置的任务名称defjobName=Jenkins.instance.getJobNames()[0]//获取任务名item=Jenkins.instance.getItemByFullName(jo......
  • 秋招,打击与教训并重
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!被秋招毒打过的人,身上就会有秋招味……不管是在秋招不断摔倒还是一路顺风顺水斩获多个Offer,相信大家都被秋招教育了一顿。01知道自己想要什么、能要什么在秋招的过程中,我们逐......
  • 秋招,打击与教训并重
    本文首发自公粽hao「林行学长」,欢迎来撩,免费领取20个求职工具资源包。了解校招、分享校招知识的学长来了!被秋招毒打过的人,身上就会有秋招味……不管是在秋招不断摔倒还是一路顺风顺水斩获多个Offer,相信大家都被秋招教育了一顿。01知道自己想要什么、能要什么在秋招的过程......
  • git:使用 git-repo-clean工具清仓库大文件,并重写commit记录(建议)
    参考:README安装下载链接:https://gitee.com/oschina/git-repo-clean/releases/解压后,即可看到二进制程序:git-repo-clean,复制到需要清理的仓库中。使用查看大文件./git-repo-clean--verbose--scan--limit=10M--type=gz--number=20清理大文件(可直接目录)./git-repo-c......
  • 清空表的两种方式——清空并重置id值的方法
    方式一:deletefromt;#不会重置id值 方式二:truncatet;#清空表、重置id值  truncate:建议使用truncate使用这个,万一你清空错了,还有机会恢复mysql它有很多个日志文件,binlog日志可以恢复数据,记录了你所有的SQL语句 ......
  • Go每日一库之187:singleflight(合并重复调用)
    本文主要介绍Go语言中的singleflight包,包括什么是singleflight以及如何使用singleflight合并请求解决缓存击穿问题。singleflight目前(Go1.20)还属于Go的准标准库,它提供了重复函数调用抑制机制,使用它可以避免同时进行相同的函数调用。第一个调用未完成时后续的重复调用会等待,当第......
  • 使用U盘制作启动盘并重装系统
    一、镜像下载   centos:https://www.centos.org/download/mirrors/    阿里镜像地址: https://developer.aliyun.com/mirror/一、制作启动盘的工具UltraISO软件下载 UltraISO-ISOCD/DVDimagecreator,editor,burner,converterandvirtualCD/DVDemula......
  • Shell脚本Kill并重启进程
    #!/bin/bashJAR_PATH=kill.jarPID=$(ps-ef|grep$JAR_PATH|grep-vgrep|awk'{print$2}')if[-z$PID]thenecho"serviceisalreadystopped"elseecho"kill$PID"kill-9$PIDfisleep1nohupjava-jar......
  • 甄别考点排除法
    如下图,在核对答案的时候发现这样一个“出题规律”。综合四个选项,发现答案C、D有一定程度的相关性,如“软件”和“应用”,“互适应”和“互操作”等同义字眼。反推出以下信息:存在这样的选择题型,该类题硬核考察知识点,选项中有且只有两个选项存在同义表达。由于在书上看到过“......