python制作一个批量更新文件名称的工具

news2024/11/19 7:35:43

 

 新书上架~👇全国包邮奥~

python实用小工具开发教程icon-default.png?t=N7T8http://pythontoolsteach.com/3

 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~

目录

一.前言

二.实现

三.使用效果


一.前言

随着数字化时代的到来,文件管理和处理变得越来越重要。在日常工作和学习中,我们经常需要处理大量的文件,而文件名作为文件的重要标识,其规范性和一致性对于文件管理和检索至关重要。然而,手动修改大量文件名既繁琐又容易出错。因此,开发一种能够批量修改文件名的工具显得尤为重要。Python作为一种功能强大的编程语言,因其简洁易懂的语法和丰富的库函数,成为实现这一功能的理想选择。

二.实现

首先,先请大模型帮我生成代码:

生成的代码内容如下:

import tkinter as tk  
from tkinter import filedialog  
  
def select_input_directory():  
    directory = filedialog.askdirectory()  
    if directory:  
        input_list.insert(tk.END, directory)  
  
def select_output_directory():  
    directory = filedialog.askdirectory()  
    if directory:  
        output_list.insert(tk.END, directory)  
  
# 创建主窗口  
root = tk.Tk()  
root.title("目录选择器")  
  
# 创建“输入目录”listbox和按钮  
input_frame = tk.Frame(root)  
input_frame.pack(pady=10)  
input_label = tk.Label(input_frame, text="输入目录:")  
input_label.pack(side=tk.LEFT)  
input_list = tk.Listbox(input_frame)  
input_list.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)  
input_button = tk.Button(input_frame, text="选择目录", command=select_input_directory)  
input_button.pack(side=tk.LEFT, padx=5)  
  
# 创建“输出目录”listbox和按钮  
output_frame = tk.Frame(root)  
output_frame.pack(pady=10)  
output_label = tk.Label(output_frame, text="输出目录:")  
output_label.pack(side=tk.LEFT)  
output_list = tk.Listbox(output_frame)  
output_list.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)  
output_button = tk.Button(output_frame, text="选择目录", command=select_output_directory)  
output_button.pack(side=tk.LEFT, padx=5)  
  
# 运行主循环  
root.mainloop()

运行后得到如下窗口:

 再加个转换按钮用于调用后端转换文件名的功能,跟大模型对话:

得到如下代码:

import tkinter as tk  
from tkinter import filedialog  
  
def select_input_directory():  
    directory = filedialog.askdirectory()  
    if directory:  
        input_list.insert(tk.END, directory)  
  
def select_output_directory():  
    directory = filedialog.askdirectory()  
    if directory:  
        output_list.insert(tk.END, directory)  
  
def convert():  
    # 这里可以添加转换逻辑  
    input_dir = input_list.get(tk.ACTIVE)  
    output_dir = output_list.get(tk.ACTIVE)  
    print(f"转换逻辑开始执行,输入目录:{input_dir},输出目录:{output_dir}")  
    # 示例逻辑,实际应用中需要根据需求实现具体的转换功能  
  
# 创建主窗口  
root = tk.Tk()  
root.title("目录选择器与转换器")  
  
# 创建“输入目录”listbox和按钮  
input_frame = tk.Frame(root)  
input_frame.pack(pady=10)  
input_label = tk.Label(input_frame, text="输入目录:")  
input_label.pack(side=tk.LEFT)  
input_list = tk.Listbox(input_frame)  
input_list.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)  
input_button = tk.Button(input_frame, text="选择目录", command=select_input_directory)  
input_button.pack(side=tk.LEFT, padx=5)  
  
# 创建“输出目录”listbox和按钮  
output_frame = tk.Frame(root)  
output_frame.pack(pady=10)  
output_label = tk.Label(output_frame, text="输出目录:")  
output_label.pack(side=tk.LEFT)  
output_list = tk.Listbox(output_frame)  
output_list.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)  
output_button = tk.Button(output_frame, text="选择目录", command=select_output_directory)  
output_button.pack(side=tk.LEFT, padx=5)  
  
# 创建“转换”按钮  
convert_frame = tk.Frame(root)  
convert_frame.pack(pady=10)  
convert_button = tk.Button(convert_frame, text="转换", command=convert)  
convert_button.pack()  
  
# 运行主循环  
root.mainloop()

运行效果如下:

 为了实现核心功能,向大模型请教:

得到功能代码:

import os  
import shutil  
  
# 设置目录A和目录B的路径  
dir_a = '/path/to/directoryA'  
dir_b = '/path/to/directoryB'  
  
# 确保目录B存在,如果不存在则创建  
if not os.path.exists(dir_b):  
    os.makedirs(dir_b)  
  
# 遍历目录A中的文件  
for filename in os.listdir(dir_a):  
    # 构建源文件和目标文件的完整路径  
    source_file = os.path.join(dir_a, filename)  
    target_file = os.path.join(dir_b, 'conversed-' + filename)  
      
    # 确保处理的是文件而不是目录  
    if os.path.isfile(source_file):  
        # 复制并重命名文件到目录B  
        shutil.copy2(source_file, target_file)  
        print(f"Copied and renamed '{filename}' to '{dir_b}/conversed-{filename}'")

 最后实现功能完整代码:

import tkinter as tk  
from tkinter import filedialog  
import os  
import shutil  
def select_input_directory():  
    directory = filedialog.askdirectory()  
    if directory:  
        input_list.insert(tk.END, directory)  
  
def select_output_directory():  
    directory = filedialog.askdirectory()  
    if directory:  
        output_list.insert(tk.END, directory)  
  
def convert():  
    # 这里可以添加转换逻辑  
    input_dir = input_list.get(tk.ACTIVE)  
    output_dir = output_list.get(tk.ACTIVE)  
    print(f"转换逻辑开始执行,输入目录:{input_dir},输出目录:{output_dir}")  
    # 将输入目录的内容重命名为指定格式。
    # 遍历目录A中的文件  
    for filename in os.listdir(input_dir):  
        # 构建源文件和目标文件的完整路径  
        source_file = os.path.join(input_dir, filename)  
        target_file = os.path.join(output_dir, 'conversed-' + filename)  
      
        # 确保处理的是文件而不是目录  
        if os.path.isfile(source_file):  
            # 复制并重命名文件到目录B  
            shutil.copy2(source_file, target_file)  
            print(f"Copied and renamed '{filename}' to '{output_dir}/conversed-{filename}'")

  
# 创建主窗口  
root = tk.Tk()  
root.title("目录选择器与转换器")  
  
# 创建“输入目录”listbox和按钮  
input_frame = tk.Frame(root)  
input_frame.pack(pady=10)  
input_label = tk.Label(input_frame, text="输入目录:")  
input_label.pack(side=tk.LEFT)  
input_list = tk.Listbox(input_frame)  
input_list.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)  
input_button = tk.Button(input_frame, text="选择目录", command=select_input_directory)  
input_button.pack(side=tk.LEFT, padx=5)  
  
# 创建“输出目录”listbox和按钮  
output_frame = tk.Frame(root)  
output_frame.pack(pady=10)  
output_label = tk.Label(output_frame, text="输出目录:")  
output_label.pack(side=tk.LEFT)  
output_list = tk.Listbox(output_frame)  
output_list.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)  
output_button = tk.Button(output_frame, text="选择目录", command=select_output_directory)  
output_button.pack(side=tk.LEFT, padx=5)  
  
# 创建“转换”按钮  
convert_frame = tk.Frame(root)  
convert_frame.pack(pady=10)  
convert_button = tk.Button(convert_frame, text="转换", command=convert)  
convert_button.pack()  
  
# 运行主循环  
root.mainloop()

三.使用效果

 非常感谢您花时间阅读我的博客,希望这些分享能为您带来启发和帮助。期待您的反馈与交流,让我们共同成长,再次感谢!

👇热门内容👇 

python使用案例与应用_安城安的博客-CSDN博客

软硬件教学_安城安的博客-CSDN博客

Orbslam3&Vinsfusion_安城安的博客-CSDN博客

网络安全_安城安的博客-CSDN博客

教程_安城安的博客-CSDN博客

python办公自动化_安城安的博客-CSDN博客

👇个人网站👇

安城安的云世界

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1710268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

14.微信小程序之地理定位功能

目录 1.地理定位介绍 1.1 申请开通 1.2 使用方法 2.拒绝授权后的解决方案 3.开通腾讯位置服务 4.LBS 逆地址解析 1.地理定位介绍 小程序地理定位是指通过小程序开发平台提供的 API,来获取用户的地理位置信息。用户在使用小程序时,可以授权小程序获…

【LabVIEW FPGA入门】同步C系列模块

1.同步使用循环定时器VI计时循环速率的系列模块 数字模块SAR ADC 模块多路复用模块 数字通道可以在一个时钟周期内执行。模拟通道需要多个时钟周期。 同步模拟模块的每个通道有一个 ADC,采集的数据在通道之间没有明显的偏差。多路复用模块使用多路复用器通过单个 A…

解决:error: failed to push some refs to ‘https://gitee.com/***/***.git‘(高效快速)

解决方案: git pull --rebase origin master 具体原因: 主要原因是gitee(github)中的README.md文件不在本地代码目录中 要执行git pull --rebase origin master命令将README.md拉到本地 然后就可以执行git push啦 写在最后: 要是问题得到…

MySQL简单测试和安装

MySQL 的特点 1、MySQL 性能卓越、服务稳定,很少出现异常宕机。 2、MySQL开放源代码且无版权制约,自主性及使用成本低。 3、MySQL历史悠久(版本众多),用户使用活跃,遇到问题可以寻求帮助。 4、MySQL体积小(相对大型关系型数据库)…

你还不知道宠物空气净化器的五大好处?难怪家里总有异味和猫毛!

养猫是一件非常令人愉快的事情,猫咪的陪伴能带给我们无尽的欢乐。然而,随着时间的推移,许多养猫的朋友会发现一个问题,那就是家中的猫毛和异味问题。其实,解决这些问题的关键就在于选择一款高效的宠物空气净化器。今天…

嵌入式学习——3——多点通信

1、套接字选项(socket options) int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); 功能:获取或设置套接…

二叉树——基础知识详解

前言: 经过前面的学习,我们接下来要开始二叉树的学习,因二叉树有难度,为了方便讲解以及各位的理解,本节知识会分成不同的小节进行学习,在本阶段只学习初阶的二叉树(堆,二叉数基本知识…

多分支拓扑阻抗匹配

最近测试信号质量,发现在有过冲、振铃等问题的时候大部分硬件工程师喜欢直接调大匹配电阻或者减小驱动电流,虽然这种操作是有效果的,但是我认为应该还可以更严谨的计算下,而不是选几个电阻多次尝试,显得不是很专业。 …

SOLIDWORKS正版一年多少钱 2024版报价

SOLIDWORKS软件作为一款优秀的三维设计工具,以其强大的功能和优质的设计工具,为设计师们提供了前所未有的便利。SOLIDWORKS三维设计软件是一款多科学集成软件,它在产品开发和制造方面发挥着重要作用。 作为整个SOLIDWORKS产品开发解决方案套件…

boost asio异步服务器(2)实现伪闭包延长连接生命周期

闭包 在函数内部实现一个子函数,子函数的作用域内能访问外部函数的局部变量。闭包就是能够读取其他函数内部变量。但是由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成程的性能问题&#x…

Discourse 使用 DiscourseConnect 来进行用户数据同步

我们都知道 Discourse 的用户管理和设置都高度依赖电子邮件。 如果 Discourse 没有设置电子邮件 SMTP 的话,作为管理员是没有办法对用户邮箱进行修改并且通过验证的。 可以采取的办法是通过 Discourse 的 DiscourseConnect 来进行用户同步。 根据官方的说法&…

Golang原生http实现中间件

Golang原生http实现中间件 中间件(middleware):常被用来做认证校验、审计等 大家常用的Iris、Gin等web框架,都包含了中间件逻辑。但有时我们引入该框架显得较为繁重,本文将介绍通过golang原生http来实现中间件操作。全…

vue复习选择题2

1. 下面哪一个方法可以实现判断元素的class属性是否含有pp样式? (A) A. hasClass(“pp”)B. is(“pp”)C. attr(“class”,“pp”)D. toggleClass(“pp”) [!NOTE] 当涉及到在 jQuery 中判断元素的类属性时,下面是各个选项的作用…

2024/5/28 P1247 取火柴游戏

取火柴游戏 题目描述 输入 k k k 及 k k k 个整数 n 1 , n 2 , ⋯ , n k n_1,n_2,\cdots,n_k n1​,n2​,⋯,nk​,表示有 k k k 堆火柴棒,第 i i i 堆火柴棒的根数为 n i n_i ni​;接着便是你和计算机取火柴棒的对弈游戏。取的规则如下&…

AI批量剪辑视频素材,高效混剪快速出片/矩阵发布,一键管理自媒体账号。

今天给大家分享一个超级好用的办公神器。特别是玩矩阵的企业,这款工具高效解决短视频剪辑问题。 这款软件可以帮你快速生产出1000条视频内容,而且还能把内容同步到多个平台账号上,多平台矩阵发布。 这款系统真的太棒了! 不仅操作简单,而且功能超强大。 …

干冰清洗机的清洗原理及应用

干冰清洗机的清洗原理及应用可以详细阐述如下: 一、清洗原理 干冰清洗机的清洗原理主要基于干冰的低温冷冻作用。干冰在常温下会迅速升华,吸收大量的热量,使周围的温度迅速降低。当干冰颗粒通过特殊的干冰清洗机喷射到清洗物体表面时&#…

Python | Leetcode Python题解之第104题二叉树的最大深度

题目: 题解: class Solution:def maxDepth(self, root: TreeNode) -> int:if not root: return 0queue, res [root], 0while queue:tmp []for node in queue:if node.left: tmp.append(node.left)if node.right: tmp.append(node.right)queue tmp…

素数判断的奥秘与编程实践

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、素数定义的深入理解 二、非素数的例子与思考 三、素数判断的编程实现 1. 穷举法判断素…

多语言印度红绿灯系统源码带三级分销代理功能

前端为2套UI,一套是html写的,一套是编译后的前端 后台功能很完善,带预设、首充返佣、三级分销机制、代理功能。 东西很简单,首页就是红绿灯的下注页面,玩法虽然单一,好在不残缺可以正常跑。

SD Flash介绍

作为一家专业生产存储芯片及存储卡的原厂,我们时常收到客户关于SD Flash的各种技术问题。MK米客方德将详细解答关于SD Flash的常见问题,助您更好地了解这一重要存储技术。 SD Flash是一种常见的存储卡技术,广泛应用于各种便携式设备中&#x…