吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1712|回复: 35
收起左侧

[Python 原创] 批量删除文件夹中所有文件名中指定字符

  [复制链接]
风子是我 发表于 2024-7-2 08:37
本帖最后由 风子是我 于 2024-7-2 11:36 编辑

经常在网上下载一些资料,下载的资料在文件名老长老长的,有些还带有网址或者种推广词句,一个一个地删除太麻烦,于时想弄个自动处理的。
下面是代码:

[Python] 纯文本查看 复制代码
import os
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox

folder_path = ""

def select_folder():
    global folder_path
    folder_path = filedialog.askdirectory()
    folder_label.config(text=folder_path)
    return folder_path

def input_chars():
    chars_to_delete = delete_entry.get()
    if chars_to_delete:
        root.after(100, rename_files, chars_to_delete)
    else:
        messagebox.showwarning("警告", "请输入要删除的字符!")

def rename_files(chars_to_delete):
    global folder_path
    if folder_path:
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                if chars_to_delete in file:
                    # 构建新的文件名
                    new_filename = file.replace(chars_to_delete, '')
                    # 获取旧文件名和新的文件名的完整路径
                    old_file_path = os.path.join(root, file)
                    new_file_path = os.path.join(root, new_filename)
                    # 重命名文件
                    os.rename(old_file_path, new_file_path)
        messagebox.showinfo("完成", "所有文件名中包含指定字符的文件都已重命名。")
    else:
        messagebox.showwarning("警告", "请选择文件夹!")

root = tk.Tk()
root.title("批量重命名文件名中字符")

folder_label = tk.Label(root, text="请选择文件夹:")
folder_label.pack()

folder_button = tk.Button(root, text="选择文件夹", command=select_folder)
folder_button.pack()

delete_label = tk.Label(root, text="请输入要删除的字符:")
delete_label.pack()

delete_entry = tk.Entry(root)
delete_entry.pack()

input_button = tk.Button(root, text="重命名", command=input_chars)
input_button.pack()

root.mainloop()


相同的字符可以处理了,如果是下面方框中的,没规律的数字,但是又不相同,怎么办?
下面是另一段代码:
[Python] 纯文本查看 复制代码
import tkinter as tk
from tkinter import filedialog
import os
import re

def select_folder():
    folder_path = filedialog.askdirectory()
    entry_folder.delete(0, tk.END)
    entry_folder.insert(0, folder_path)

def search_and_remove():
    folder_path = entry_folder.get()
    if not os.path.exists(folder_path):
        tk.messagebox.showerror("错误", "文件夹不存在")
        return

    files = os.listdir(folder_path)
    for file in files:
        if re.search(r'\[[^]]*\]', file):
            # 构建新的文件名
            new_filename = re.sub(r'\[.*?\]', '', file)
            # 重命名文件
            os.rename(os.path.join(folder_path, file), os.path.join(folder_path, new_filename))
            print(f"已成功处理文件: {file} -> {new_filename}")

root = tk.Tk()
root.title("搜索并删除含有[]的文件名")

label_folder = tk.Label(root, text="请选择文件夹:")
label_folder.pack()

entry_folder = tk.Entry(root)
entry_folder.pack()

button_folder = tk.Button(root, text="选择文件夹", command=select_folder)
button_folder.pack()

button_search = tk.Button(root, text="搜索并删除", command=search_and_remove)
button_search.pack()
root.mainloop()

1719880048090.png
程序运行界面:
微信图片_20240702083325.png 微信图片_20240702083244.png

打包后的可执行程序:
链接:https://pan.baidu.com/s/1CX51trcOIAJj87WCKCEpew
提取码:52pj

有个坛友@@SU150228 讲的很有道理,有矛就有盾,功能上应该有文件名中增加的功能,现在修改了下,可以增加,也可以删除,代码如下,修改后的下载链接在最后面

[Python] 纯文本查看 复制代码
import os
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox

folder_path = ""
chars_to_delete = ""  # 要删除的字符
chars_to_add = ""  # 要添加的字符

def select_folder():
    global folder_path
    folder_path = filedialog.askdirectory()
    folder_label.config(text=folder_path)

def input_chars_to_delete():
    global chars_to_delete
    chars_to_delete = delete_entry.get()
    if chars_to_delete:
        rename_files(chars_to_delete)
    else:
        messagebox.showwarning("警告", "请输入要删除的字符!")

def input_chars_to_add():
    global chars_to_add
    chars_to_add = add_entry.get()
    if chars_to_add:
        rename_files(chars_to_add, add=True)
    else:
        messagebox.showwarning("警告", "请输入要添加的字符!")

def rename_files(chars_to_add, add=False):
    global folder_path
    if folder_path:
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                if add:
                    new_filename = chars_to_add + file
                else:
                    new_filename = file.replace(chars_to_add, '')
                
                # 获取旧文件名和新的文件名的完整路径
                old_file_path = os.path.join(root, file)
                new_file_path = os.path.join(root, new_filename)
                
                # 重命名文件
                try:
                    os.rename(old_file_path, new_file_path)
                except FileNotFoundError:  # 如果文件被其他程序打开或移动,可能会引发错误
                    pass
        messagebox.showinfo("完成", "所有文件名中包含指定字符的文件都已处理。")
    else:
        messagebox.showwarning("警告", "请选择文件夹!")

root = tk.Tk()
root.title("批量重命名文件名中字符")

folder_label = tk.Label(root, text="请选择文件夹:")
folder_label.pack()

folder_button = tk.Button(root, text="选择文件夹", command=select_folder)
folder_button.pack()

delete_label = tk.Label(root, text="请输入要删除的字符:")
delete_label.pack()

delete_entry = tk.Entry(root)
delete_entry.pack()

delete_button = tk.Button(root, text="删除字符", command=input_chars_to_delete)
delete_button.pack()

add_label = tk.Label(root, text="请输入要添加的字符:")
add_label.pack()

add_entry = tk.Entry(root)
add_entry.pack()

add_button = tk.Button(root, text="添加字符", command=input_chars_to_add)
add_button.pack()

root.mainloop()

11d8d24bb19cb56e5ed7a776c4679d9.png

应坛友要求,修改后的打包后的程序下载:
链接:https://pan.baidu.com/s/14gF-ar1L12g2UTMal9cNaw
提取码:52pj

免费评分

参与人数 9吾爱币 +16 热心值 +8 收起 理由
ot1686 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
墨与非 + 1 + 1 谢谢@Thanks!
菜鸟新手2333 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
hwh425 + 1 鼓励转贴优秀软件安全工具和文档!
yg9999 + 1 + 1 热心回复!
Suxi191431 + 1 + 1 谢谢@Thanks!
wiltzy + 1 + 1 谢谢@Thanks!
SU150228 + 2 + 1 有矛必有盾,要是加个文件名批量增加字符就更好了

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

6122008 发表于 2024-7-2 08:53
这不就是重命名工具就可以实现的么?
 楼主| 风子是我 发表于 2024-7-2 11:40
有个坛友@@SU150228 讲的很有道理,有矛就有盾,功能上应该有文件名中增加的功能,现在修改了下,可以增加,也可以删除,代码如下,修改后的下载链接:
链接:https://pan.baidu.com/s/14gF-ar1L12g2UTMal9cNaw
提取码:52pj
jackting 发表于 2024-7-2 08:44
pc2k007 发表于 2024-7-2 08:51
不错,支持原创!
ianlcc 发表于 2024-7-2 08:51
谢谢楼主的分享
这个非常的实用,谢谢
 楼主| 风子是我 发表于 2024-7-2 08:59
6122008 发表于 2024-7-2 08:53
这不就是重命名工具就可以实现的么?

重命名是把原来的文件名全改了,比如,我截图上面下载的课件和教案,用重命名软件不行。
因为原来的课程名称不能变,我只想把多余的删除。
e_fei_lk 发表于 2024-7-2 09:02
这 个好,适合从网上下载的视频或音频改名
NoWshun 发表于 2024-7-2 09:05
小功能,大实用
cxgdrbtxgz 发表于 2024-7-2 09:10
实用,感谢楼主
feigs0710 发表于 2024-7-2 09:14
这个可以一试,感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 01:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表