关于用pycham编写自动生成文件夹
想实现自动收纳的功能,目前只实现了后缀001的能够生成,我不知道是不是我的思路有问题修改前
修改后
但是我想实现的是完整的收纳,把相同的图片都保存在一个文件夹下,请大佬有提修改意见的吗
期望图
完整代码:
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 18:27
你这个需求都不是看的很清楚啊
大致就是根据图片的名称自动生成文件夹,已经实现了单张图片(不含001,002...的那种)生成文件夹,对于同一种文案多张照片的我只能实现创建后缀名是001的文件夹,剩下的002,003...我得自己手动放入后缀是001的文件夹,所以不知道怎么写后续代码 侃遍天下无二人 发表于 2023-11-19 17:59
先定义下啥叫相同的图片,是同一天内的还是文件内容完全一致的
对于(哈哈哈.png)这样是单个的图片能实现创建文件夹,但是(嘿嘿嘿001.png,嘿嘿嘿002.png,...)这样的,我只能实现以第一个名称来创建文件夹,剩下的我得手动放(以”嘿嘿嘿001“为名称的文件夹)里进去 侃遍天下无二人 发表于 2023-11-19 17:59
先定义下啥叫相同的图片,是同一天内的还是文件内容完全一致的
需求描述不精确,不好判断 Simlie 发表于 2023-11-19 18:40
对于(哈哈哈.png)这样是单个的图片能实现创建文件夹,但是(嘿嘿嘿001.png,嘿嘿嘿002.png,...)这样 ...
虽然还不是很清楚你的规则,但你可以按这个思路试试:
遍历当前目录,按你的规则对文件名进行映射(这一步抽取为函数),然后若映射名对应的目录不存在,则将映射名创建为目录,接下来将这个文件移到映射目录中 KirchoffNZ 发表于 2023-11-19 18:34
需求是:一个文件名对应一个文件夹名?
对,但是会有一个地方会有多个照片的(像你去故宫旅游会拍很多照片),我会命名图片名后缀会加上001,002来保存,但是创建文件夹我希望能放进同一个文件夹
页:
[1]
2