首页 > 其他分享 >MJ数据处理:读取txt版

MJ数据处理:读取txt版

时间:2023-12-19 10:22:47浏览次数:30  
标签:读取 filename MJ parts file path txt os

读取文件夹内的txt名称,并根据该名称将其批量修改

import os
import re

UNWANTED_UNITS = ["undefined", "皮皮", "zly324"]
IMAGE_EXTENSIONS = [".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff"]

# 检查文件是否为图片
def is_image_file(filename):
    _, ext = os.path.splitext(filename)
    return ext.lower() in IMAGE_EXTENSIONS

# 获取文件夹内第一个txt文件的名称(不包括扩展名)
def get_first_txt_title(path):
    try:
        for file in os.listdir(path):
            if file.endswith(".txt"):
                return os.path.splitext(file)[0]
    except FileNotFoundError:
        print(f"错误:指定的路径'{path}'不存在。")
    except Exception as e:
        print(f"发生错误:{e}")

    return None

# 生成唯一的新文件名
def generate_unique_filename(path, filename, ext):
    new_file_path = os.path.join(path, filename + ext)
    counter = 1
    while os.path.exists(new_file_path):
        new_file_path = os.path.join(path, f"{filename}({counter}){ext}")
        counter += 1
    return new_file_path

# 重命名图片文件
def rename_image_files(path, prefix):
    if not prefix:  # 如果没有找到txt文件或文件夹中没有txt文件
        print("未找到txt文件或txt文件为空,不进行重命名操作。")
        return

    try:
        files = [f for f in os.listdir(path) if is_image_file(f) and os.path.isfile(os.path.join(path, f))]
        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
            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)]

                # 删除特定规则的元素
                while parts and re.search(r'^[a-f0-9\-]{32,}$', parts[-1]):
                    parts.pop(-1)
                while parts and len(parts[-1]) <= 4:
                    parts.pop(-1)

                renamed = '_'.join(parts)

            # 添加前缀
            renamed = f"{prefix}_{renamed}"

            # 生成唯一的文件名
            new_file_path = generate_unique_filename(path, renamed, ext)
            os.rename(os.path.join(path, file), new_file_path)

        print("重命名完成。")
    except Exception as e:
        print(f"重命名过程中发生错误:{e}")

# 主函数
def main():
    path = input("请输入文件夹地址: ")
    prefix = get_first_txt_title(path)
    rename_image_files(path, prefix)

if __name__ == "__main__":
    main()

 

标签:读取,filename,MJ,parts,file,path,txt,os
From: https://www.cnblogs.com/zly324/p/17913004.html

相关文章

  • 域名所有权验证 —— DNS TXT 域名验证
    参考:https://help.aliyun.com/zh/cdn/getting-started/verify-the-ownership-of-a-domain-namehttps://blog.csdn.net/qq_17335549/article/details/131781640    ------------------------------       ......
  • Python 如何读取 Excel 表内容
    在数据处理和分析中,Excel是一个常用的工具,而使用Python读取Excel表内容可以更方便地进行数据分析和处理。本文将介绍几种常见的Python库和方法,帮助您实现读取Excel表内容的操作。使用openpyxl库读取Excel表内容openpyxl是一个用于读写Excel文件的Python库,支持Excel2010及以上版本......
  • Matlab 读取父文件下子文件夹内容
    1functionResizeImageofData2%读取文件夹下的所有数据3Files=dir('D:\1\');%父文件夹4LengthFiles=length(Files);5oldFolder=cd;%打开当前工作目录6spath=strcat(oldFolder,'\Data\');%在工程目录下创建名为'\Data\'的新文件夹78if~exis......
  • Matlab读取UCI数据集Iris中数据
    >> [attrib1,attrib2,attrib3,attrib4,class]=textread('data\iris.data','%f%f%f%f%s', 'delimiter',',');>> attrib=[attrib1';attrib2';attrib3';attrib4']';>>a......
  • Jmeter46 配置元件,读取.properties,.ini, .txt 配置文件,为全局做自动化
     配置元件主要是用与测试前的配置,将配置转换为变量设置到jmetercontext中。而jmeter默认并没有配置元件(.properties)读取器,但是由于jmeter是开源的,我们可以自己定义一个配置元件来读取配置文件。插件下载地址:https://www.testautomationguru.com/jmeter-property-file-reader-......
  • helloword执行过程,cpu从内存中读取数据
    1.cpu通过地址总线发出指令告诉内存控制器,我要操作哪块内存2.cpu通过控制总线向内存控制器发出读/写指令3.cpu通过数据总线,操作内存鼠标点击HelloWorld运行过程:1.点击鼠标,鼠标会发一个机器变更号---->usb控制器把信号传给---->系统总线---->南桥----->北桥---->cpu......
  • 【创意、创造】用 Python pandas做一个读取Excel,再写入新的Excel小工具
    Python很好很强大,1.5天时间,简化很多重复的劳动,哈哈~ importpandasaspdimportdatetimeasdtdefhandleFrontEnd():#处理【上周前端发版】开始sheet_front_end=pd.read_excel('D:\某前端原文件.xlsx',sheet_name='Sh......
  • C++读取FY卫星遥感图像(HDF格式)
    转一下我自己的博客网上找了大概2周,艰难的实现了C++读取HDF图像,CSDN吃相真难看,好多文章都要会员。。。#include<cstdint>#include<hdf5.h>#include<iostream>#include<matplotlibcpp.h>#include<opencv2/opencv.hpp>#include<opencv2/core/core.hpp>#include<......
  • 12.15---python文件读取
    withopen('pi_digits.txt')asfile:contents=file.read()print(contents.strip())要想访问文件内容需要先打开它才能访问,函数open()接受一个参数:要打开文件的名称。在当前执行文件的目录中查找文件名。代码中,open('E:/python/文件和异常/pi_digits.txt')返回一个表示......
  • 电脑跟服务器都能读取的u盘格式是什么
    U盘的三种格式1、FAT32格式:FAT32格式兼容性相对好一些,几乎可以应对所有主流的操作系统(比如Windows、MacOS、Linux等),并且可以快速读写。但它的缺点是不能设置权限,安全等级较低;而且这个格式下的U盘最高只能支持4G以下的单个文件传输。linux下使用命令将U盘格式为FAT32:2、NTFS......