首页 > 编程语言 >图片镜像程序(输入父目录与阈值)

图片镜像程序(输入父目录与阈值)

时间:2023-12-22 11:36:06浏览次数:32  
标签:阈值 image new file path 镜像 目录 图片

import os
from PIL import Image

def mirror_images_in_subfolders(parent_directory, x_threshold):
    """
    遍历指定目录,找到包含图片数量少于指定阈值的子文件夹,并镜像这些图片,
    同时保存新名称以避免重复。
    :param parent_directory: 要搜索的根目录。
    :param x_threshold: 文件夹被考虑进行镜像的最大图片数量。
    :return: None
    """
    # 在父目录中遍历所有目录和文件
    for subdir, dirs, files in os.walk(parent_directory):
        image_files = [file for file in files if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp'))]
        image_count = len(image_files)

        # 检查图片数量是否少于阈值且大于0
        if 0 < image_count < x_threshold:
            print(f"正在镜像以下文件夹中的图片: {subdir} - 图片总数: {image_count}")

            # 处理每个图片文件
            for image_file in image_files:
                try:
                    # 构建完整的文件路径
                    file_path = os.path.join(subdir, image_file)
                    # 打开并镜像图片
                    with Image.open(file_path) as img:
                        mirrored_img = img.transpose(Image.FLIP_LEFT_RIGHT)

                        # 分离文件名和扩展名
                        name, extension = os.path.splitext(image_file)
                        # 创建带有(1)后缀的新名称
                        new_name = f"{name}(1){extension}"
                        new_path = os.path.join(subdir, new_name)

                        # 检查新文件名是否存在,避免覆盖
                        if not os.path.exists(new_path):
                            # 将镜像后的图片保存回同一目录并使用新名称
                            mirrored_img.save(new_path)
                        else:
                            print(f"警告: 文件 {new_path} 已存在,跳过此文件。")
                except Exception as e:
                    print(f"处理图片 {image_file} 时发生错误: {e}")

            print(f"完成镜像以下文件夹中的图片: {subdir}")

if __name__ == "__main__":
    # 提示用户输入父目录和X阈值
    parent_dir = input("请输入父目录的地址: ")
    x_value = int(input("请输入X值(图片数量阈值): "))

    # 执行镜像过程
    mirror_images_in_subfolders(parent_dir, x_value)

 

标签:阈值,image,new,file,path,镜像,目录,图片
From: https://www.cnblogs.com/zly324/p/17921241.html

相关文章

  • django 如何在apps目录创建应用
    django-adminstartapp命令创建应用时,默认保存在当前目录, 不过可以带一个路径参数先查看一下帮助信息django-adminstartapp-husage:django-adminstartapp[-h][--templateTEMPLATE][--extensionEXTENSIONS][--nameFILES][--exclude[EXCLUDE]][--version][-v......
  • ubuntu镜像制作
    实现步骤:基础镜像:ubuntu:18.04python版本:python3.8.8jupyter安装ssh服务xface4实现图形界面tigervncserver实现远程连接novnc实现web远程supervisor实现服务进程自动拉起 dockerrun-itd--namemyosubuntu:18.04dockerexec-itmyosbashaptupdate#安装p......
  • 目录操作
    目录操作:一:mkdir,即makedirectory创建目录命令案例:1.1.mkdir文件名1.2.使用-p参数,可以将路径的层次目录全部创建:mkdir-p文件名1/文件名2/文件名31.3.rmdir,即removedirectory删除空目录,如果目录非空,则删除失败:rmdirabc  ......
  • 云技术分享 | 使用快照和 AMI 镜像进行 Amazon EC2 的备份和恢复
    在通过使用 EC2 计算服务的时候,为了更加方便的对虚拟机的环境和数据进行回滚,可以通过亚马逊云科技的快照功能实现。如果您只需要恢复连接到 EC2 实例的单个卷,则可以单独恢复该卷,分离现有卷,然后将恢复的卷连接到您的 EC2 实例。如果您需要恢复整个 EC2 实例,包括其所有关联......
  • Linux环境离线安装Docker&Docker镜像部署
    引子相信很多同学在项目上线的时候都会遇到没有网络的情况。一般而言,我们都会想到使用Docker镜像部署,让我们看看搜索引擎给出来Docker的优势吧(如下图)。那么,问题来了,本身部署环境都没有网络,怎么离线安装Docker呢?怎么使用Docker镜像部署项目?OK,让我们开始吧。一、CenterOS7.0......
  • C/C++语法基础目录
    目录C/C++语法基础目录前言程序语言简介三大控制结构批量数据存储模块化编程指针自定义数据类型文件面向对象封装继承多态C/C++语法基础目录前言使用过较多的教学书籍,有很多不错的书籍,但是并不是那么切合自身的教学习惯,于是此书被拉开了帷幕。本书的第一次落键是在2023年12月2......
  • Python图书目录提取标题序号、页码、标题内容
    切割获取标题需要,注意序号标题之间的空格与后面页码前的空格不一样;替换标题序号、页码去除前后空格获取标题内容;返回处理好的数据写入Excel,OK完成任务.book_contents.py#-*-coding=utf-8-*-importpandasaspd#切割字符获取标题序号、标题、页码defsplit_words(d......
  • Helm部署Harbor,实现高可用的镜像仓库(超详细分享)
    Helm部署Harbor,实现高可用的镜像仓库(超详细分享) 前言:从业务场景看Harbor部署我在前面的文章中介绍了离线安装、在线安装等Harbor的部署方式,但其缺点都是无法做高可用,在实际的业务场景中一旦Harbor服务器异常,将会造成很大的影响。对应前面的几种部署方式,官方也并没有给出高可......
  • docker 工作目录下overlay目录清理办法
    1、查看docker服务占用的系统空间[root@jenkins]#dockersystemdf2、使用docker修剪命令进行操作--谨慎使用,明确知道自己在做什么dockersystemprune是将docker整个服务的各个资源都进行修剪,一般不直接用,按需修剪docker imageprune删除所有悬挂的镜像dockernetworkprune......
  • dockerfile构建镜像
    定制docker镜像的方式有两种:手动修改容器内容,导出新的镜像(前面超哥讲dockersave等)基于Dockerfile自行编写指令,基于指令流程创建镜像。dockerfile简介 镜像是多层存储,每一层在前一层的基础上进行修改;容器也是多层存储,以镜像为基础层,在其基础上加一层作为容器运行时的存......