总结批量创建文件夹及文件重命名、移动的方法

ops/2024/9/23 22:32:37/

一、需求:

1、根据一个文件夹的所有文件夹名称,批量创建另一个文件夹,并重命名新的文件夹

2、根据提供的数据,获取图片名称,并修改为新的文件名称,保存到json文件中

3、根据提供的图片,复制图片到指定文件夹,并重命名图片

二、代码:

import os# 根据一个文件夹的所有文件夹名称,批量创建另一个文件夹,并重命名新的文件夹path = r"D:\Desktop\file"
new_path = r"D:\Desktop\file_ret"def get_file_names(directory):filenames = []for item in os.listdir(directory):if os.path.isfile(os.path.join(directory, item)):# 不带后缀名base_name, extension = os.path.splitext(item)filenames.append(base_name)return filenames# 使用方法:
current_dir_files = get_file_names(path)# 检查新文件夹是否已存在,如果没有则创建
if not os.path.exists(new_path):os.makedirs(new_path)# 批量创建文件夹
for d in current_dir_files:# 新文件夹的名称后缀+“_ret”完整路径new_folder_path = os.path.join(new_path, d + "_ret")# 检查新文件夹是否已存在,如果没有则创建if not os.path.exists(new_folder_path):os.makedirs(new_folder_path)
# 根据提供的数据,获取图片名称,并修改为新的文件名称,保存到json文件中import pandas as pd
import jsonret = []# 导入excel文件
xls = pd.ExcelFile(r'D:\Desktop\xinxi.xlsx')# 读取所有sheet的数据并存储为字典,键为sheet名称,值为DataFrame
sheet_dfs = {sheet_name: xls.parse(sheet_name) for sheet_name in xls.sheet_names}# 现在sheet_dfs中包含了各个sheet的数据
for sheet_name, df in sheet_dfs.items():print(f"Sheet Name: {sheet_name}")for i in list(df._values)[1:]:ret_dict = {}if i[3].isdigit():image_name = i[3] + i[9] + "_ret.jpg"ret_dict[image_name] = i[3]ret.append(ret_dict)print(image_name)if ret:print(len(ret))# 指定文件路径与编码方式(UTF-8)file_path = "info.json"# 写入文件时确保打开文件时指定正确的编码with open(file_path, 'w', encoding='utf-8') as f:# ensure_ascii=False 防止中文字符被转义为Unicode编码json.dump(ret, f, ensure_ascii=False)  
# 根据提供的图片,复制图片到指定文件夹,并重命名图片import json
import os
import shutil# 指定包含中文的JSON文件路径
file_path = "info.json"# 读取文件时同样需要指定正确的编码
with open(file_path, 'r', encoding='utf-8') as f:data = json.load(f)# 获取包含图片的所有文件夹
path = r"D:\Desktop\file"def get_file_names(directory):filenames = []for item in os.listdir(directory):if os.path.isfile(os.path.join(directory, item)):# 不带后缀名base_name, extension = os.path.splitext(item)filenames.append(base_name)return filenames# 使用方法:
current_dir_files = get_file_names(path)# 复制图片ret_err = []for s in str_list:# 路径需要修改image_file_path = os.path.join(r"D:\Desktop\tu", s)new_image_file_path = os.path.join(r"D:\Desktop\tu_ret", s + "_ret")# 或者为了更好的可读性,我们可以分开写image_names = []for root, dirs, files in os.walk(image_file_path):for file in files:if os.path.isfile(os.path.join(root, file)):  # 添加条件判断,只处理文件image_name = os.path.splitext(file)[0]image_names.append(image_name)ret = []for i in data:# print(list(i.values())[0])if list(i.values())[0] in image_names:print(list(i.values())[0])ret.append(list(i.keys())[0])file_path = image_file_path + "\\" + list(i.values())[0] + ".jpg"# 新的文件名(包括扩展名)new_filename = list(i.keys())[0]# 获取原始图片的完整新路径(包括目标文件夹和新的文件名)new_image_path = os.path.join(new_image_file_path, new_filename)try:# 移动并重命名图片shutil.copy2(file_path, new_image_path)except:ret_err.append(i)print(len(ret))if ret_err:# 指定文件路径与编码方式(UTF-8)file_path = "err.json"# 写入文件时确保打开文件时指定正确的编码with open(file_path, 'w', encoding='utf-8') as f:# ensure_ascii=False 防止中文字符被转义为Unicode编码json.dump(ret_err, f, ensure_ascii=False) 

http://www.ppmy.cn/ops/11798.html

相关文章

quivr部署

安装supabase https://zcywxy.blog.csdn.net/article/details/137496929 安装nginx并配置反向代理 location /authend {rewrite ^/authend(/.*)$ $1 break; # 去掉 URL 中的 /backendproxy_pass http://localhost:54321; # 将请求转发到本地的 5050 端口proxy_http_version 1.…

大数据平台搭建2024(三)

三:HBase安装 提前上传hbase安装包至虚拟机 1 上传、解压 tar -zxvf hbase-2.0.0-alpha2-bin.tar.gz -C /hadoop2 修改配置文件 在/hadoop/hbase-2.0.0-alpha2-bin/conf文件夹里 vi /hadoop/hbase-2.0.0-alpha2/conf/hbase-env.sh修改hbase-env.sh文件 export…

学习Rust的第11天:模块系统

Rust的模块系统可以使用它来管理不断增长的项目,并跟踪 modules 存储在何处。 Rust的模块系统是将代码组织成逻辑片段的有效工具,因此可以实现代码维护和重用。模块支持分层组织、隐私管理和代码封装。Rust为开发人员提供了多功能和可扩展的方法来管理项…

在ELF 1开发环境中使用Qt Creator进行远程调试

Qt Creator是一款跨平台集成开发环境(IDE),主要适用于支持Qt框架的各类应用程序开发。其内置的远程调试机制使得开发者能够在本地开发环境中对部署在远程设备上的代码进行调试,无需直接对远程设备进行操作。Qt Creator会通过网络连…

Kali Linux扩容(使用图形化界面)

因为今天在拉取vulhub中的镜像的时候报错空间不够,因为最开始只给了20GB的空间,所以现在需要扩容了,结合了一下网上的找到了简便的解决方法 1.首先虚拟机设置->磁盘->扩展 小插曲:在对虚拟机磁盘进行扩容以后,…

mysql download 2024

好久没在官网下载 mysql server 安装包。今天想下载发现: 我访问mysql官网的速度好慢啊。mysql server 的下载页面在哪里啊,一下两下找不到。 最后,慢慢悠悠终于找到了下载页面,如下: https://dev.mysql.com/downlo…

dremio支持设置

Dremio 支持提供可用于诊断目的的设置。这些设置通过 Dremio UI:设置>支持启用(或禁用) 使用 Client Tools 可以配置当用户查看数据集中的数据时,Dremio 项目的工具栏上显示哪些客户端应用程序按钮。用户可以通过单击相应的工具…

盲人导航设备制造:赋能独立出行,革新生活体验

作为资深记者,我有幸亲历了一场由盲人导航设备制造领域创新成果所驱动的独立出行体验。一款名为蝙蝠避障的导航辅助应用,以其实时避障功能与便捷的人体工学设计,彻底改变了视障人士的出行方式,使之更加安全、自由。 首先&#xf…