首页 > 其他分享 >MJ和网络数据批量重命名

MJ和网络数据批量重命名

时间:2023-10-19 16:13:33浏览次数:39  
标签:重命名 files name 批量 excel MJ parts path os

import os
import openpyxl
import re

UNWANTED_UNITS = ["undefined", "皮皮", "zly324"]


# 第一步:删名称
def rename_files(path):
files = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
renamed_files = []

counter = 1
for file in files:
filename, ext = os.path.splitext(file)

# 乱码类
if re.search(r'[a-f0-9]{32}', filename) or not '_' in filename:
renamed = f"({counter})"
counter += 1
# AI出图类
else:
parts = re.split(r'[_]+', filename)
parts.pop(0) # 删除第一个单元

# 删除特定的单元
parts = [part for part in parts if part not in UNWANTED_UNITS]

# 删除所有带数字的单元
parts = [part for part in parts if not any(char.isdigit() for char in part)]

# 结尾规则
# 删除UUID风格数字
while parts and re.search(r'^[a-f0-9\-]{32,}$', parts[-1]):
parts.pop(-1)
# 删除长度小于等于4的部分
while parts and len(parts[-1]) <= 4:
parts.pop(-1)

renamed = '_'.join(parts)

renamed_files.append(renamed + ext)

return renamed_files


# 第二步:增名称
def add_prefix(files, prefix):
prefixed_files = [f"{prefix}_{file}" if not file.startswith(prefix) else file for file in files]

# 删除特定的单元
prefixed_files = ['_'.join([part for part in re.split(r'[_]+', name) if part not in UNWANTED_UNITS]) for name in
prefixed_files]

return prefixed_files


# 第三步:创建Excel并自动打开
def create_and_open_excel(files, renamed_files, path):
wb = openpyxl.Workbook()
ws = wb.active

for original, renamed in zip(files, renamed_files):
ws.append([original, renamed])

excel_path = os.path.join(path, os.path.basename(path) + ".xlsx")
wb.save(excel_path)

# 打开Excel文件
os.system(f'start "" "{excel_path}"')

return excel_path


# 第五步:读取Excel并重命名文件
def rename_files_from_excel(path, excel_path):
wb = openpyxl.load_workbook(excel_path)
ws = wb.active

for row in ws.iter_rows(values_only=True):
original_name, new_name = row
target_path = os.path.join(path, new_name)

# 检查原文件是否存在
if os.path.exists(os.path.join(path, original_name)):
# 如果目标文件名已存在,则添加一个编号
counter = 1
base_name, ext = os.path.splitext(new_name)
while os.path.exists(target_path):
new_name = f"{base_name} ({counter}){ext}"
target_path = os.path.join(path, new_name)
counter += 1

os.rename(os.path.join(path, original_name), target_path)

print("重命名完成。")


# 主函数
def main():
path = input("请输入文件夹地址: ")
files = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
renamed_files = rename_files(path)

prefix = input("请输入需要批量命名的词: ")
prefixed_files = add_prefix(renamed_files, prefix)

excel_path = create_and_open_excel(files, prefixed_files, path)
print(f"Excel文件已保存为:{excel_path}")
print("请在Excel里微调B列数据,然后保存和关闭Excel文件。完成后按Enter键继续...")

input()

# 重命名文件
rename_files_from_excel(path, excel_path)


if __name__ == "__main__":
main()

标签:重命名,files,name,批量,excel,MJ,parts,path,os
From: https://www.cnblogs.com/zly324/p/17774950.html

相关文章

  • msyql 批量导入 同时生成ID
    一、背景二、实现点击查看代码INSERTintorev_water_user_pay(SELECT (SELECTCONCAT(FLOOR(RAND()*99999),LPAD(FLOOR(RAND()*999999999),12,'0') )ASrandom_string)ASid, nullasuser_code, "1"asuser_type, u.usernameasu......
  • 将达梦数据库的JDBC驱动包 DmJdbcDriver18.jar 安装到本地 Maven 仓库
    将达梦数据库的JDBC驱动包DmJdbcDriver18.jar安装到本地Maven仓库 一、问题背景在博客《SpringBootMyBatisPlus整合达梦数据库》中写道,从 https://eco.dameng.com/download/ 中下载达梦JDBC驱动包,如下: JDK1.8 对应的JDBC驱动包为:DmJdbcDriver18.jar ......
  • mysql批量更新,每条数据都不一样怎么办
    UPDATEuserSETage=CASEidWHEN1THEN3WHEN2THEN4WHEN3THEN5ENDWHEREidIN(1,2,3)php示例$display_order=array(1=>4,2=>1,3=>2,4=>3,5=>9,6=>5,......
  • C#上位机序列9: 批量读写+事件广播
    1.读取配置文件及创建变量信息(点位名称,地址,数据类型(bool/short/int/float/long/double))2.读任务&写任务,数据有变化时事件广播通知usingHslCommunication;usingHslCommunication.Core;usingHslCommunication.ModBus;usingPLCEvent.Util;usingSystem;usingSystem.......
  • 【小白必看】使用Python批量下载英雄联盟皮肤图片的技术实现
    前言英雄联盟是一款备受喜爱的团队对战游戏,游戏中每位英雄都有各种精美的皮肤供玩家选择。本文将介绍一个使用Python编写的英雄联盟皮肤下载器,可以快速获取所有英雄的皮肤图片,让您更方便地欣赏和收藏这些皮肤。运行效果截图导入必要的模块和库importrequests#pipi......
  • 【小白必看】Python爬虫实战之批量下载女神图片并保存到本地
    前言爬取网络上的图片是一种常见的需求,它可以帮助我们批量下载大量图片并进行后续处理。本文将介绍如何使用Python编写一个简单的爬虫,从指定网页中获取女神图片,并保存到本地。运行结果部分图片1.引入所需库首先需要导入两个库:requests用于发送网络请求,lxml用于解析......
  • 信创办公--基于WPS的Word最佳实践系列(图片批量居中对齐)
    项目背景当我们进行Word排版的时候,一次性插入过多图片后,每张进行居中设置需要的重复动作较多,花费的时间也较长,因此我们可以用到WPS软件自带的工具——“查找替换”。操作步骤1、操作步骤单击【开始】选项卡,找到【查找与替换】选项,如图1-1所示。图1-1打开查找替换2、操作步骤单击【......
  • es - Kibana API - 批量插入
    (3).批量插入:POST_bulk{"index":{"_index":"books","_id":"19553"}}{"BookID":19552,"BookName":"C语言程序设计实验指导与习题解答","BookIntr":"导语_点评_推荐词","Book......
  • MQ系列15:MQ实现批量消息处理
    MQ系列1:消息中间件执行原理MQ系列2:消息中间件的技术选型MQ系列3:RocketMQ架构分析MQ系列4:NameServer原理解析MQ系列5:RocketMQ消息的发送模式MQ系列6:消息的消费MQ系列7:消息通信,追求极致性能MQ系列8:数据存储,消息队列的高可用保障MQ系列9:高可用架构分析MQ系列10:如何保证消......
  • PHP轮子批量替换数据库前缀
    <?phpinclude_once('fix_mysql.inc.php');//设置好相关信息echo'<metacharset="utf-8">';$dbserver='localhost';$dbname='test';//替换成你的数据库名$dbuser='root';//替换成你的数据库用户名$dbpassword='123......