吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 638|回复: 13
收起左侧

[求助] 关于用pycham编写自动生成文件夹

[复制链接]
Simlie 发表于 2023-11-19 17:45
想实现自动收纳的功能,目前只实现了后缀001的能够生成,我不知道是不是我的思路有问题

修改前 微信图片_20231119173840.png
修改后
image.png

但是我想实现的是完整的收纳,把相同的图片都保存在一个文件夹下,请大佬有提修改意见的吗


期望图
image.png

完整代码:

import os
import shutil

# 源图片文件夹路径
source_folder = "C:\\Vido"
def remove_last_whitespace_in_folder(folder_path):
    # 遍历文件夹下的所有文件
    for file_name in os.listdir(folder_path):
        # 获取文件路径
        file_path = os.path.join(folder_path, file_name)

        # 检查是否是图片文件
        if os.path.isfile(file_path) and file_name.lower().endswith(('.jpg', '.jpeg', '.png', '.gif')):
            # 获取图片名字和扩展名
            image_name, ext = os.path.splitext(file_name)

            # 去除名字中最后一个空白符
            last_non_whitespace_index = len(image_name) - 1
            while last_non_whitespace_index >= 0 and image_name[last_non_whitespace_index.isspace():
                last_non_whitespace_index -= 1

            new_image_name = image_name[:last_non_whitespace_index + 1]

            # 生成新的文件路径
            new_file_path = os.path.join(folder_path, new_image_name + ext)

            # 重命名文件
            os.rename(file_path, new_file_path)

# 示例文件夹路径
folder_path = "C:\\Vido"

# 去除文件夹下的图片名字中最后一个空白符
remove_last_whitespace_in_folder(folder_path)

# 遍历源文件夹中的所有文件
for filename in os.listdir(source_folder):
    if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):  # 判断文件是否为图片
        if "001" in filename:
            # 创建以文件名命名的文件夹
            folder_name = os.path.splitext(filename)[0]
            os.makedirs(os.path.join(source_folder, folder_name), exist_ok=True)

            # 移动图片文件到新创建的文件夹中
            source_path = os.path.join(source_folder, filename)
            destination_path = os.path.join(source_folder, folder_name, filename)
            shutil.move(source_path, destination_path)

        if "00" not in filename:  # 判断文件名是否不包含 "00"
        # 创建以文件名命名的文件夹
            folder_name = os.path.splitext(filename)[0]
            os.makedirs(os.path.join(source_folder, folder_name), exist_ok=True)

        # 移动图片文件到新创建的文件夹中
            source_path = os.path.join(source_folder, filename)
            destination_path = os.path.join(source_folder, folder_name, filename)
            shutil.move(source_path, destination_path)




新人,不太会表达,望谅解。

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

侃遍天下无二人 发表于 2023-11-19 17:59
先定义下啥叫相同的图片,是同一天内的还是文件内容完全一致的
一只大菜猫 发表于 2023-11-19 18:27
KirchoffNZ 发表于 2023-11-19 18:34
 楼主| Simlie 发表于 2023-11-19 18:37
一只大菜猫 发表于 2023-11-19 18:27
你这个需求都不是看的很清楚啊

大致就是根据图片的名称自动生成文件夹,已经实现了单张图片(不含001,002...的那种)生成文件夹,对于同一种文案多张照片的我只能实现创建后缀名是001的文件夹,剩下的002,003...我得自己手动放入后缀是001的文件夹,所以不知道怎么写后续代码
 楼主| Simlie 发表于 2023-11-19 18:40
侃遍天下无二人 发表于 2023-11-19 17:59
先定义下啥叫相同的图片,是同一天内的还是文件内容完全一致的

对于(哈哈哈.png)这样是单个的图片能实现创建文件夹,但是(嘿嘿嘿001.png,嘿嘿嘿002.png,...)这样的,我只能实现以第一个名称来创建文件夹,剩下的我得手动放(以”嘿嘿嘿001“为名称的文件夹)里进去

点评

虽然还不是很清楚你的规则,但你可以按这个思路试试: 遍历当前目录,按你的规则对文件名进行映射(这一步抽取为函数),然后若映射名对应的目录不存在,则将映射名创建为目录,接下来将这个文件移到映射目录中  详情 回复 发表于 2023-11-19 19:49
skybird 发表于 2023-11-19 19:28
侃遍天下无二人 发表于 2023-11-19 17:59
先定义下啥叫相同的图片,是同一天内的还是文件内容完全一致的

需求描述不精确,不好判断
头像被屏蔽
277249 发表于 2023-11-19 19:39
提示: 作者被禁止或删除 内容自动屏蔽
侃遍天下无二人 发表于 2023-11-19 19:49
Simlie 发表于 2023-11-19 18:40
对于(哈哈哈.png)这样是单个的图片能实现创建文件夹,但是(嘿嘿嘿001.png,嘿嘿嘿002.png,...)这样 ...

虽然还不是很清楚你的规则,但你可以按这个思路试试:

遍历当前目录,按你的规则对文件名进行映射(这一步抽取为函数),然后若映射名对应的目录不存在,则将映射名创建为目录,接下来将这个文件移到映射目录中
 楼主| Simlie 发表于 2023-11-19 20:25
KirchoffNZ 发表于 2023-11-19 18:34
需求是:一个文件名对应一个文件夹名?

对,但是会有一个地方会有多个照片的(像你去故宫旅游会拍很多照片),我会命名图片名后缀会加上001,002来保存,但是创建文件夹我希望能放进同一个文件夹
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 18:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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