吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4156|回复: 54
收起左侧

[原创工具] Python文件夹整理命名合并工具

  [复制链接]
AbleFeng 发表于 2024-1-3 23:59
本帖最后由 AbleFeng 于 2024-1-4 00:09 编辑

【软件介绍】
Python文件夹整理命名合并小工具。本来是想从150多个子文件夹中提取出我想要的1920x1080以上的壁纸图片,所以就搞了个小脚本,顺便把它打包成了带界面小工具,使用该工具,您可以一键完成文件夹的整理把需要的文件类型保存,把不需要的文件批量删除;文件按子文件夹名字重命名操作,无需手动逐个处理。它支持把子文件夹中所有文件合并移动到总文件夹中,让您能够灵活地对文件进行批量处理。

【使用说明】
1、拖拽文件夹到输入框然后设置要保留的文件扩展名
2、如果需要按照文件大小决定保留哪些文件就勾选并设置该项
3、如果需要按照图片尺寸决定保留哪些图片就勾选并设置该项

扩展名随便输入,支持大小写字母数字随便用中文或符号隔开就行,另外按子文件夹命名和全部移动到总文件夹的两个功能就没啥介绍的了,操作前记得备份好您的文件再进行测试使用;至于界面嘛不想用Pyside这个太大,然而tk又一言难尽,就随便写写吧!第一次发帖有不妥的各位大佬多多指出。

单文件打包11M大小:https://www.alipan.com/s/nVMhBEQa5q1

主操作源码贴出学习学习:

# -*- coding: utf-8 -*-
import os
from PIL import Image
import shutil

def delete_files(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            if not is_image(file_path):
                os.remove(file_path) # 不是图片的文件统统删掉
            else:
                if not is_large_enough(file_path, 1920, 1080):
                    os.remove(file_path) # 是图片但是不大于等于该尺寸的也删掉
                else:
                    print(f"Keeping: {file_path}") # 其余符合条件的保留

def rename_files(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for idx, file in enumerate(files): # 遍历当前文件夹中的文件
            file_path = os.path.join(root, file)
            extension = os.path.splitext(file_path)[1] # 获取文件扩展名
            if len(files) == 1: # 如果只有一个文件,则不添加递增数字
                new_file_name = os.path.basename(root) + extension
            else:
                new_file_name = os.path.basename(root) + '_' + str(idx+1) + extension # 新的文件名
            new_file_path = os.path.join(root, new_file_name)
            os.rename(file_path, new_file_path) # 重命名文件

def move_files(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            new_file_path = os.path.join(folder_path, file)
            counter = 1

            while os.path.exists(new_file_path):
                # 文件名重复时进行重命名
                file_name, file_extension = os.path.splitext(file)
                new_file_name = f"{file_name}_{counter}{file_extension}"
                new_file_path = os.path.join(folder_path, new_file_name)
                counter += 1

            shutil.move(file_path, new_file_path)
    # 删除子文件夹,设置topdown=False 以先删除子文件夹,再删除父文件夹,避免出现权限问题
    for root, dirs, files in os.walk(folder_path, topdown=False):
        for dir in dirs:
            dir_path = os.path.join(root, dir)
            shutil.rmtree(dir_path)

def is_image(file_path):
    image_extensions = ['.jpg', '.jpeg', '.png']
    return any(file_path.lower().endswith(ext) for ext in image_extensions)

def is_large_enough(file_path, min_width, min_height):
    try:
        with Image.open(file_path) as img:
            width, height = img.size
            return width >= min_width and height >= min_height
    except (IOError, OSError):
        return False

if __name__ == '__main__':
    folder_path = r'C:\Users\Administrator\Desktop\OEM\ACER'  # 当前文件夹路径
    delete_files(folder_path) #保留指定尺寸图片
    #rename_files(folder_path) #按文件夹名字命名
    #move_files(folder_path)    #合并全部文件到当前文件夹

文件夹整理合并工具

文件夹整理合并工具

文件夹整理批量命名工具

文件夹整理批量命名工具

免费评分

参与人数 10吾爱币 +14 热心值 +7 收起 理由
as22070 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xwy6688 + 1 谢谢@Thanks!
domenswel + 1 谢谢@Thanks!
irundream + 1 + 1 我很赞同!
ltxhhz + 1 热心回复!
Steam23 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
confiant + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
T4DNA + 1 + 1 用心讨论,共获提升!
jiyuecaiyun968 + 1 + 1 谢谢@Thanks!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| AbleFeng 发表于 2024-10-31 10:44
本帖最后由 AbleFeng 于 2024-10-31 11:00 编辑

v1.1更新——2024-10-30
1、重命名增加了按文件夹相对路径目录命名等
2、修复同名时递增数字bug,程序主要不是用来改文件名的,更多需求可以使用拖把更名器等小工具实现再合并
3、新增功能四:组合合并文件夹,可按顺序两两合并,或五个五个合并。如文件夹1和文件夹2合并,3并4,5并6等 。最大化程序窗口就可以看到)
4、新增功能五:A文件夹里面有100个文件,B文件夹内有10个子文件夹,每个子文件夹内的文件都与A文件夹部分文件同名,用A文件夹内的文件替换掉B文件夹下的子文件夹里面的同名文件
5、增加多线程、日志显示、界面更新等


Python由于单文件打包的,可能会遇到杀毒软件误报拦截(这问题个人似乎没什么好办法),就自行添加信任吧,接受virscan等随便检测
v1.1.png
新版.png
 楼主| AbleFeng 发表于 2024-11-13 08:42
irundream 发表于 2024-11-11 18:59
不知能否加按照图片名关键字分类合并到关键字文件夹,感谢

举例细说下呢
青春莫相随 发表于 2024-1-4 15:02
flylujun 发表于 2024-1-4 15:13
开发不易,要支持
bandishui 发表于 2024-1-4 16:49
这个可以, 学习一下
wuai22222 发表于 2024-1-4 17:44
发扬原创精神,支持楼主分享文件管理工具!
T4DNA 发表于 2024-1-4 17:48
这个gui是TK??
 楼主| AbleFeng 发表于 2024-1-4 18:13
T4DNA 发表于 2024-1-4 17:48
这个gui是TK??

是的,tkinter
lvv15 发表于 2024-1-4 22:36
不错不错,我3千+...张图片可以用用
AG9000 发表于 2024-1-4 22:56
很实用感谢分享
bobbyandstitch 发表于 2024-1-4 23:03
看起来是个实用又简单的工具,谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 21:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表