首页 > 其他分享 >图片名中文翻译成英文

图片名中文翻译成英文

时间:2023-12-21 21:56:03浏览次数:38  
标签:__ file 中文翻译 name 英文 new path os 图片

1.图片名只保留中文

import os
import re
import unicodedata

def is_chinese(char):
    """判断一个字符是否是中文。"""
    return unicodedata.category(char).startswith('Lo')

def retain_chinese(filename):
    """保留文件名中的中文字符。"""
    return ''.join(char for char in filename if is_chinese(char))

def rename_files_in_directory(directory):
    """重命名指定目录中的所有图片,只保留中文字符,并保持原扩展名。"""
    for filename in os.listdir(directory):
        # 确保文件是图片
        if not filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
            continue

        # 提取原始扩展名
        original_extension = os.path.splitext(filename)[-1]

        # 新文件名只包含中文字符,且保持原扩展名
        new_name = retain_chinese(filename) + original_extension

        # 如果文件名未改变,则跳过
        if new_name == filename:
            continue

        # 如果文件名已存在,则添加后缀
        new_path = os.path.join(directory, new_name)
        counter = 1
        while os.path.exists(new_path):
            base = retain_chinese(filename)
            new_path = os.path.join(directory, f"{base}({counter}){original_extension}")
            counter += 1

        # 重命名文件
        os.rename(os.path.join(directory, filename), new_path)
        print(f"Renamed {filename} to {new_path}")

def main():
    directory = input("请输入目录地址: ")
    if os.path.isdir(directory):
        rename_files_in_directory(directory)
    else:
        print("提供的地址不是一个有效的目录。")

if __name__ == "__main__":
    main()

2.建立统计excel

import os
from openpyxl import Workbook

def list_image_filenames(directory):
    # 支持的图片文件扩展名列表
    img_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp']
    
    # 遍历目录,列出所有图片文件名(不含后缀)
    return [os.path.splitext(file)[0] for file in os.listdir(directory)
            if os.path.splitext(file)[1].lower() in img_extensions]

def write_to_excel(filenames, save_path):
    # 创建一个Excel工作簿
    workbook = Workbook()
    sheet = workbook.active
    
    # 在第一行添加标题
    sheet.cell(row=1, column=1).value = "旧数据"
    sheet.cell(row=1, column=2).value = "新数据"
    
    # 从第二行开始,将文件名写入第一列
    for index, name in enumerate(filenames, 2):  # 从第二行开始
        sheet.cell(row=index, column=1).value = name
    
    # 保存Excel文件
    workbook.save(save_path)

def main():
    # 从用户获取目录路径
    dir_path = input("请输入文件夹目录路径: ")
    
    # 检查路径是否存在
    if not os.path.exists(dir_path):
        print("指定的路径不存在,请检查后重试。")
        return
    
    # 获取图片文件名列表
    filenames = list_image_filenames(dir_path)
    
    # 设置Excel文件保存路径
    excel_path = os.path.join(dir_path, "统计文件名.xlsx")
    
    # 写入Excel并保存
    write_to_excel(filenames, excel_path)
    print(f"文件名已成功写入 {excel_path}")

if __name__ == "__main__":
    main()

 

3.chatgpt翻译

4.点对点修改:

import os
import pandas as pd

def unique_filename(path, name, extension):
    """生成唯一的文件名,避免重命名时覆盖现有文件。"""
    counter = 1
    new_name = name
    while os.path.exists(os.path.join(path, new_name + extension)):
        new_name = f"{name}({counter})"
        counter += 1
    return new_name

def main():
    # 请求用户输入文件夹路径和Excel文件名
    folder_path = input("请输入文件夹路径: ")
    excel_file = input("请输入Excel文件名(包括.xlsx扩展名): ")

    # 尝试读取Excel文件
    try:
        df = pd.read_excel(os.path.join(folder_path, excel_file))
        print("列名:", df.columns)
        
        # 确认列名存在
        if '旧名称' not in df.columns or '新名称' not in df.columns:
            print("错误:找不到'旧名称'或'新名称'列。请检查Excel文件的列标题。")
            return
    except Exception as e:
        print(f"读取Excel文件时出错: {e}")
        return

    # 支持的图片格式
    image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp']

    # 遍历目录中的文件
    for file in os.listdir(folder_path):
        file_path = os.path.join(folder_path, file)
        if os.path.isfile(file_path) and any(file.endswith(ext) for ext in image_extensions):
            name, extension = os.path.splitext(file)
            # 在Excel中查找匹配的旧名称
            new_name = df.loc[df['旧名称'] == name, '新名称'].values
            if new_name.size > 0:
                new_name = unique_filename(folder_path, new_name[0], extension)
                new_file_path = os.path.join(folder_path, new_name + extension)
                os.rename(file_path, new_file_path)
                print(f"重命名:'{file}' -> '{new_name + extension}'")

    print("重命名过程完成。")

if __name__ == "__main__":
    main()

 

标签:__,file,中文翻译,name,英文,new,path,os,图片
From: https://www.cnblogs.com/zly324/p/17920217.html

相关文章

  • 爬虫_初步(爬取豆瓣图片)
    引用python库fromurllib.requestimporturlopenimporturllib.request,urllib.errorimportre 找到本机的headers headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/120.0.0.0Sa......
  • 伪造网页数据(每个文件夹抽指定数量的图片并重命名)
    (承接"公共标,特殊标"的结构)1.对于指定父目录结构,每个文件夹抽指定数量的随机图片。importosimportshutilimportrandomdeffind_image_folders(parent_directory):#查找包含图片的文件夹image_folders=[]forroot,dirs,filesinos.walk(parent_direc......
  • 顶部图片随着下拉放大
    最近写项目要用到类似于淘宝店破的我的页面,在顶部用户执行下拉操作时顶部背景图会放大并高度增加的效果,松开时回弹到原来的大小。先上效果:效果主要利用一下几个事件:@touchstart当用户手指按下时@touchmove当用户手指移动过程中@touchend当用户手指抬起时这几个事件会记录......
  • WPF显示网络图片的几种方法
    1、利用数据流1Imageimg;2byte[]btyarray=GetImageFromResponse(imageUrl);34//字节数据转流5MemoryStreamms=newMemoryStream(btyarray);67//重点:设置Image控件的Source为流格式的图片数据8img.Source=BitmapFrame.Create(ms,BitmapCrea......
  • Leaflet 使用图片作为地图
    Leaflet使用图片作为地图关键代码:L.CRS.Simple.transformation=newL.Transformation(1,0,1,0);//坐标原点切换为左上角varmap=newL.Map('map',{crs:L.CRS.Simple,//设置地图坐标模式为简单模式center:[0,0],//地图中心zoom:-0.5,//缩......
  • # cesium 截取图片
    cesium截取图片没啥好说的,直接贴代码吧 toImg(){if(viewer){viewer.scene.render();letcanvas=viewer.scene.canvas;letimage=canvas.toDataURL("image/png").replace("image/png","image/octet-stream");......
  • vue上传图片到指定文件夹
    vue代码<template><divclass="app-container"> <divclass="wenben"><el-upload:disabled="dis==0?true:false"class="upload-demo":action="uploadUrl":on-......
  • vue3+vite动态引入图片(import.meta.glob)
    Vite官方提供的 import.meta.glob API。这个方法一般用于批量引入js或者ts文件,但实际上这个方法就是很多import语句的集合而已,import是可以引入图片的,所以import.meta.glob也同样可以引入图片资源,只不过需要加入配置项as:'url'就可以了。 通常来说,我们可以用ES提供的......
  • 图片转换成base64格式的优缺点
    前言什么是base64?Base64,顾名思义,就是包括小写字母a-z、大写字母A-Z、数字0-9、符号"+“、”/“一共64个字符的字符集,(另加一个“=”,实际是65个字符,至于为什么还会有一个“=”,这个后面再说)。任何符号都可以转换成这个字符集中的字符,这个转换过程就叫做base64编码。图片转换成base6......
  • Vue中动态(import 、require)显示img图片
    vue中,经常会遇到显示图片的问题,如果是一个普通组件的话,那么这样就可以了<imgsrc="../assets/images/avtor.jpg"width="100%">上文的弊端有两个:首先,是采用绝对路径引入。如果以后图片移动了位置,需要修改代码。其次,如果说图片是一个logo图片,同一页面内有多处用到。就需要引用......