欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過(guò)Python實(shí)現(xiàn)批量修改文件名前后綴功能

 更新時(shí)間:2025年05月30日 10:38:34   作者:封奚澤優(yōu)  
在備考期間因?yàn)樾枰螺d一些電子檔的資料,然后下載的部分資料會(huì)有自己的前綴,但是看著有點(diǎn)不舒服,因?yàn)槲募脖容^多,所以想能不能通過(guò)代碼的形式對(duì)于文件名進(jìn)行批量的修改,因此本文給大家分享了通過(guò)Python實(shí)現(xiàn)批量修改文件名前后綴功能,需要的朋友可以參考下

功能實(shí)現(xiàn)

要實(shí)現(xiàn)的功能其實(shí)很簡(jiǎn)單,通過(guò)Python代碼獲取文件夾的路徑,通過(guò)循環(huán)處理該文件夾中所有文件的名稱,之后對(duì)文件名進(jìn)行更新即可,整個(gè)撰寫代碼是通過(guò)人工加上ai的方式進(jìn)行的。

添加

添加前后綴,直接對(duì)原始的字符串進(jìn)行拼接即可,中間通過(guò)分割符來(lái)分割,對(duì)于添加的字符串不論中文還是英文都需要滿足windows系統(tǒng)文件命名的規(guī)范,項(xiàng)目中通過(guò)ai實(shí)現(xiàn)了驗(yàn)證過(guò)程,但是可能還是不完善。

# 添加前綴 
new_base = f"{content}{selected_separator}{base_name}"
# 添加后綴
new_base = f"{base_name}{selected_separator}{content}"

 重命名操作

# 執(zhí)行重命名操作
try:
    os.replace(file_path, new_path)  # 自動(dòng)覆蓋已存在的文件
    print(f"成功重命名:{filename} -> {new_name}")
except Exception as e:
    messagebox.showerror("重命名錯(cuò)誤",
                         f"無(wú)法重命名 {filename}:\n{str(e)}\n"
                          "可能原因:\n"
                          "1. 文件正在被其他程序使用\n"
                          "2. 沒有寫入權(quán)限\n"
                          "3. 文件名包含系統(tǒng)保留字符")
     break  # 遇到錯(cuò)誤中止處理

刪除

刪除前后綴即對(duì)字符串進(jìn)行分割操作。 

# 刪除前綴使用split(從左分割)
parts = base_name.split(f"{content}{selected_separator}", 1)
# 刪除后綴使用rsplit(從右分割)
parts = base_name.rsplit(f"{selected_separator}{content}", 1)

沒想到這么快在使用過(guò)程中出現(xiàn)問(wèn)題 ,這個(gè)直接分割可能出現(xiàn)中間截取的情況,比如“專題01 物質(zhì)的組成、性質(zhì)、分類與化學(xué)用語(yǔ)(講)(原卷+解析版)”這個(gè)文件名,如果我是要?jiǎng)h除后綴“ 物質(zhì)”,這個(gè)肯定是無(wú)法找到的,但是如果是截取,他則會(huì)只保留“專題01”。

修改代碼如下:

            elif selected_mode == "刪除前綴":
                # 格式驗(yàn)證:必須包含分割符且分割符在content之后
                if base_name.startswith(f"{content}{selected_separator}"):
                    # 計(jì)算前綴長(zhǎng)度時(shí)考慮中文等寬字符問(wèn)題
                    prefix_length = len(content) + len(selected_separator)
                    new_base = base_name[prefix_length:]
 
                    # 增加空文件名校驗(yàn)
                    if not new_base:
                        print(f"警告:刪除前綴后文件名為空,跳過(guò) {filename}")
                        continue
                else:
                    print(f"未找到匹配前綴:{content}{selected_separator}")
                    continue
            elif selected_mode == "刪除后綴":
                # 格式驗(yàn)證:必須嚴(yán)格以【分隔符+內(nèi)容】結(jié)尾
                suffix_pattern = f"{selected_separator}{content}"
                if base_name.endswith(suffix_pattern):
                    # 計(jì)算后綴長(zhǎng)度(考慮多語(yǔ)言字符)
                    suffix_length = len(suffix_pattern)
                    new_base = base_name[:-suffix_length]
 
                    # 空文件名防御機(jī)制
                    if not new_base.strip():  # 處理純空白字符情況
                        print(f"危險(xiǎn)操作:刪除后綴后文件名為空,跳過(guò) {filename}")
                        continue
                else:
                    print(f"未找到匹配后綴:{suffix_pattern}")
                    continue

當(dāng)然在刪除前還需要對(duì)文件名進(jìn)行驗(yàn)證,看是否有符合的前后綴以及是否和其他文件名沖突。

# 前綴驗(yàn)證
if f"{content}{selected_separator}" in base_name:

 不論是添加還是刪除操作都需要檢測(cè)文件名是否沖突。

# 檢測(cè)文件名沖突
if os.path.exists(new_path):
    # 彈出二次確認(rèn)對(duì)話框
    confirm = messagebox.askyesno(
        "確認(rèn)覆蓋",
        f"文件 '{new_name}' 已存在!\n"
        f"原文件:{filename}\n"
        f"新文件:{new_name}\n\n"
        "是否覆蓋已有文件?",
        icon='warning'
     )
     if not confirm:
         print(f"跳過(guò)已存在文件:{new_name}")
         continue

圖形界面

定義界面

對(duì)于這些框架的代碼,使用ai還是比較容易實(shí)現(xiàn),就是調(diào)試起來(lái)有點(diǎn)麻煩,不能無(wú)腦丟給ai,還需要自己進(jìn)行分析,通過(guò)電腦界面來(lái)對(duì)窗口的界面和位置進(jìn)行設(shè)置。

# 定義界面框架
class Frame:
    # 創(chuàng)建窗口
    window = tk.Tk()
    # 在Frame類初始化前添加樣式配置代碼
    style = ttk.Style()
    # 設(shè)置主題為clam
    style.theme_use('clam')
    # 配置下拉框主體樣式
    style.configure('Centered.TCombobox', justify="center", foreground="#2c3e50",
                    fieldbackground="white", padding=(0, 15), anchor="center", state="readonly")
    # 配置下拉列表的樣式
    style.configure('Centered.TCombobox.Listbox', foreground="#2c3e50",
                    rowheight=30, anchor="center")
    # 設(shè)置標(biāo)題
    window.title("文件批量重命名工具")
    # 獲取屏幕大小
    screen_width = window.winfo_screenwidth()
    screen_height = window.winfo_screenheight()
    # 計(jì)算所需窗口的相對(duì)大小
    relative_width = int(screen_width * 0.5)
    relative_height = int(screen_height * 0.5)
    # 計(jì)算窗口位于屏幕中央的坐標(biāo)
    relative_x = (screen_width - relative_width) // 2
    relative_y = (screen_height - relative_height) // 2
    # 應(yīng)用窗口尺寸和位置(格式:寬度x高度+X坐標(biāo)+Y坐標(biāo))
    window.geometry(f"{relative_width}x{relative_height}+{relative_x}+{relative_y}")
    # 應(yīng)用組件
    module(window)
    # 運(yùn)行窗口
    window.mainloop()

定義組件

主要就是涉及到了文本框、按鈕和下拉框的布局,需要對(duì)文本框修改成只讀的屬性,文件夾路徑

操作模式和分割符就沒有進(jìn)行是否規(guī)范的判斷。

def module(window):
    global path_entry, mode_var, separator_var  # 聲明全局變量(因?yàn)楹罄m(xù)在其他函數(shù)中需要使用到這些參數(shù))
    # 初始化默認(rèn)值
    mode_var = tk.StringVar(value="添加前綴")
    separator_var = tk.StringVar(value=" _下劃線")
    #########################################################################################################
    # 新增創(chuàng)建路徑選擇容器(頂部區(qū)域)
    path_frame = tk.Frame(window)
    path_frame.pack(side=tk.TOP, pady=20)
    # 創(chuàng)建只讀文本框
    path_entry = tk.Entry(path_frame, width=65, font=("仿宋", 12, "bold"), state="readonly",
                          readonlybackground="white")
    path_entry.pack(side=tk.LEFT, padx=5, ipady=25)
    # 創(chuàng)建瀏覽按鈕
    browse_button = tk.Button(path_frame, text="獲取文件夾名", width=100, height=2, bg="#2196F3", fg="white",
                              font=("仿宋", 18, "bold"), command=lambda: browse_folder(path_entry))
    browse_button.pack(side=tk.RIGHT, padx=5)
    #########################################################################################################
    # 增加操作模式選擇區(qū)域
    mode_frame = tk.Frame(window)
    mode_frame.pack(fill=tk.X, pady=20)
    # 模式選擇標(biāo)簽
    mode_label = tk.Label(mode_frame, text="操作模式:", font=("仿宋", 28, "bold"), width=15)
    mode_label.pack(side=tk.LEFT, padx=5)
    # 下拉框選項(xiàng)數(shù)據(jù)
    mode_options = ["添加前綴", "添加后綴", "刪除前綴", "刪除后綴"]
    # 創(chuàng)建下拉框(要用textvariable=mode_var綁定數(shù)據(jù),不然不會(huì)更新)
    mode_combobox = ttk.Combobox(mode_frame, values=mode_options, width=30, style='Centered.TCombobox',
                                 justify="center", state="readonly", font=("仿宋", 28, "bold"), textvariable=mode_var)
    mode_combobox.pack(side=tk.LEFT, padx=15)
    mode_combobox.current(0)  # 設(shè)置默認(rèn)選中
    #########################################################################################################
    # 增加常見分割符區(qū)域
    mode_frame = tk.Frame(window)
    mode_frame.pack(fill=tk.X, pady=20)
    # 模式選擇標(biāo)簽
    mode_label = tk.Label(mode_frame, text="常見分割符", font=("仿宋", 28, "bold"), width=15, anchor="center")
    mode_label.pack(side=tk.LEFT, padx=5)
    # 下拉框選項(xiàng)數(shù)據(jù)
    mode_options = ["_下劃線", "-連字符", ".點(diǎn)號(hào)", " 空格"]
    # 創(chuàng)建下拉框(新增綁定textvariable=separator_var)
    mode_combobox = ttk.Combobox(mode_frame, values=mode_options, width=30, style='Centered.TCombobox',
                                 font=("仿宋", 28, "bold"), state="readonly", justify="center",
                                 textvariable=separator_var)
    mode_combobox.pack(side=tk.LEFT, padx=15)
    mode_combobox.current(0)  # 設(shè)置默認(rèn)選中
    #########################################################################################################
    # 給界面添加確認(rèn)和取消的按鈕
    # 創(chuàng)建按鈕容器框架(實(shí)現(xiàn)更靈活的布局控制)
    button_frame = tk.Frame(window)
    # 固定在窗口底部并設(shè)置縱向間距
    button_frame.pack(side=tk.BOTTOM, pady=20)
    # 創(chuàng)建確認(rèn)和取消按鈕
    confirm_button = tk.Button(button_frame, text="確認(rèn)", width=12, height=2, bg="#4CAF50", fg="white",
                               font=("仿宋", 18, "bold"), command=lambda: on_confirm())  # 綁定確認(rèn)事件處理
    cancel_button = tk.Button(button_frame, text="取消", width=12, height=2, bg="#F44336", fg="white",
                              font=("仿宋", 18, "bold"),
                              command=lambda: window.destroy())  # 直接綁定關(guān)閉窗口的事件
    # 確認(rèn)按鈕(添加pack布局)
    confirm_button.pack(side=tk.LEFT, padx=10, ipady=5)
    # 取消按鈕(添加pack布局)
    cancel_button.pack(side=tk.RIGHT, padx=10, ipady=5)

系統(tǒng)界面如下圖所示

完整代碼

完整的代碼如下:

import os
import tkinter as tk
from tkinter import filedialog
from tkinter import ttk
from tkinter import messagebox
from tkinter import simpledialog
 
 
# 驗(yàn)證文件名是否符合Windows規(guī)范(中文增強(qiáng)版)
# 修改現(xiàn)有is_valid_filename函數(shù)
def is_valid_filename(text: str) -> bool:
    # 非法字符檢測(cè)(保持原邏輯)
    illegal_chars = set('\\/:*?"<>|')
    if any(char in illegal_chars for char in text):
        return False
 
    # 保留名稱檢測(cè)(保持原邏輯)
    reserved_names = {
        'CON', 'PRN', 'AUX', 'NUL', 'COM1', 'COM2', 'COM3',
        'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9',
        'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6',
        'LPT7', 'LPT8', 'LPT9'
    }
    if text.upper() in reserved_names:
        return False
 
    # 增強(qiáng)中文處理
    # 1. 檢查全角字符是否包含非法字符(中文輸入法可能輸入全角字符)
    fullwidth_illegal = set('\/:*?"<>|')  # 全角非法字符
    if any(char in fullwidth_illegal for char in text):
        return False
 
    # 2. 增強(qiáng)長(zhǎng)度檢測(cè)(基于字符數(shù)而非字節(jié)數(shù))
    # Windows允許最多255個(gè)字符(包括中文)
    if len(text) > 255:
        return False
 
    # 3. 檢查首尾空格(中文文件名常見問(wèn)題)
    if text.strip() != text:
        return False
 
    # 4. 檢查末尾點(diǎn)號(hào)(.test.txt. 這種形式)
    if text.endswith('.') or text.startswith('.'):
        return False
 
    return True
 
 
# 用文本框獲取添加或者刪除的字符串
def getTextbox(parent_window=None):
    # 通過(guò)全局控件獲取父窗口
    global path_entry  # 聲明使用全局路徑輸入框
    parent_window = path_entry.winfo_toplevel()  # 獲取輸入框所在的頂級(jí)窗口
 
    # 添加循環(huán)輸入機(jī)制
    while True:
        content = simpledialog.askstring(
            "輸入內(nèi)容",
            "請(qǐng)輸入要添加的字符串(不能包含 \\/:*?\"<>| 等非法字符):",  # 添加提示
            parent=parent_window
        )
        print("輸入:", content)
        # 用戶取消輸入
        if content is None:
            return None
 
        # 驗(yàn)證邏輯
        if not content:
            messagebox.showerror("錯(cuò)誤", "輸入不能為空!")
        elif not is_valid_filename(content):
            messagebox.showerror("錯(cuò)誤",
                                 f"文件名不合法!\n"
                                 f"1. 請(qǐng)勿使用:\\ / : * ? \" < > | 及其全角形式\n"
                                 f"2. 不要使用CON、PRN等保留名稱\n"
                                 f"3. 長(zhǎng)度不超過(guò)255字符(當(dāng)前:{len(content)})\n"
                                 f"4. 首尾不能有空格\n"
                                 f"5. 不能以點(diǎn)號(hào)開頭或結(jié)尾")
        else:
            return content  # 合法輸入退出循環(huán)
 
 
# 新增文件夾瀏覽函數(shù)
def browse_folder(entry_widget):
    """打開文件夾選擇對(duì)話框"""
    folder_path = filedialog.askdirectory(title='請(qǐng)選擇要處理的文件夾')
    if folder_path:
        # 清空并更新文本框內(nèi)容
        entry_widget.config(state='normal')
        entry_widget.delete(0, tk.END)
        entry_widget.insert(0, folder_path)
        entry_widget.config(state='readonly')
        # 可選:自動(dòng)滾動(dòng)到末尾
        entry_widget.xview_moveto(1)
 
 
# 定義確認(rèn)事件處理
def on_confirm():
    # print("確認(rèn)")
    # 獲取所有輸入數(shù)據(jù)
    folder_path = path_entry.get()
    selected_mode = mode_var.get()
    selected_separator = separator_var.get()[0]  # 只要前一個(gè)英文字符即可
 
    # 驗(yàn)證數(shù)據(jù)完整性
    if not folder_path:
        messagebox.showerror("警告", "請(qǐng)先選擇文件夾!")
        # 選擇文件夾名
        browse_folder(path_entry)
        return
 
    # 打印結(jié)果
    print(f"文件夾路徑:{folder_path}")
    print(f"操作模式:{selected_mode}")
    print(f"分隔符:{selected_separator}")
 
    # 獲取要添加或者刪除的文字,需要在循環(huán)外就確認(rèn)了,因?yàn)橹恍枰_認(rèn)一次即可
    content = getTextbox()
 
    # 輸入為None不能繼續(xù)運(yùn)行了,否則會(huì)把None當(dāng)做字符串進(jìn)行拼接
    if content is None:
        return
    # 新增文件處理邏輯(Listdir獲取文件夾中所有文件和文件夾名稱組成的列表)
    for filename in os.listdir(folder_path):
        # 獲取文件路徑(join拼接路徑)
        file_path = os.path.join(folder_path, filename)
        if os.path.isfile(file_path):
            # 打印文件路徑
            # print(f"正在處理文件:{file_path}")
            # 分割文件名和拓展名
            base_name, ext = os.path.splitext(filename)
            # 根據(jù)模式處理文件名
            if selected_mode == "添加前綴":
                # 直接進(jìn)行拼接操作
                new_base = f"{content}{selected_separator}{base_name}"
                # print(new_base)
            elif selected_mode == "添加后綴":
                new_base = f"{base_name}{selected_separator}{content}"
            elif selected_mode == "刪除前綴":
                # 格式驗(yàn)證:必須包含分割符且分割符在content之后
                if base_name.startswith(f"{content}{selected_separator}"):
                    # 計(jì)算前綴長(zhǎng)度時(shí)考慮中文等寬字符問(wèn)題
                    prefix_length = len(content) + len(selected_separator)
                    new_base = base_name[prefix_length:]
 
                    # 增加空文件名校驗(yàn)
                    if not new_base:
                        print(f"警告:刪除前綴后文件名為空,跳過(guò) {filename}")
                        continue
                else:
                    print(f"未找到匹配前綴:{content}{selected_separator}")
                    continue
            elif selected_mode == "刪除后綴":
                # 格式驗(yàn)證:必須嚴(yán)格以【分隔符+內(nèi)容】結(jié)尾
                suffix_pattern = f"{selected_separator}{content}"
                if base_name.endswith(suffix_pattern):
                    # 計(jì)算后綴長(zhǎng)度(考慮多語(yǔ)言字符)
                    suffix_length = len(suffix_pattern)
                    new_base = base_name[:-suffix_length]
 
                    # 空文件名防御機(jī)制
                    if not new_base.strip():  # 處理純空白字符情況
                        print(f"危險(xiǎn)操作:刪除后綴后文件名為空,跳過(guò) {filename}")
                        continue
                else:
                    print(f"未找到匹配后綴:{suffix_pattern}")
                    continue
 
        # 拼接新的文件名
        new_name = f"{new_base}{ext}"
        # 拼接新的文件路徑
        new_path = os.path.join(folder_path, new_name)
        # 檢測(cè)文件名沖突
        if os.path.exists(new_path):
            # 彈出二次確認(rèn)對(duì)話框
            confirm = messagebox.askyesno(
                "確認(rèn)覆蓋",
                f"文件 '{new_name}' 已存在!\n"
                f"原文件:{filename}\n"
                f"新文件:{new_name}\n\n"
                "是否覆蓋已有文件?",
                icon='warning'
            )
            if not confirm:
                print(f"跳過(guò)已存在文件:{new_name}")
                continue
        # 執(zhí)行重命名操作
        try:
            os.replace(file_path, new_path)  # 自動(dòng)覆蓋已存在的文件
            print(f"成功重命名:{filename} -> {new_name}")
        except Exception as e:
            messagebox.showerror("重命名錯(cuò)誤",
                                 f"無(wú)法重命名 {filename}:\n{str(e)}\n"
                                 "可能原因:\n"
                                 "1. 文件正在被其他程序使用\n"
                                 "2. 沒有寫入權(quán)限\n"
                                 "3. 文件名包含系統(tǒng)保留字符")
            break  # 遇到錯(cuò)誤中止處理
 
 
# 定義界面展示的組件
def module(window):
    global path_entry, mode_var, separator_var  # 聲明全局變量(因?yàn)楹罄m(xù)在其他函數(shù)中需要使用到這些參數(shù))
    # 初始化默認(rèn)值
    mode_var = tk.StringVar(value="添加前綴")
    separator_var = tk.StringVar(value=" _下劃線")
    #########################################################################################################
    # 新增創(chuàng)建路徑選擇容器(頂部區(qū)域)
    path_frame = tk.Frame(window)
    path_frame.pack(side=tk.TOP, pady=20)
    # 創(chuàng)建只讀文本框
    path_entry = tk.Entry(path_frame, width=65, font=("仿宋", 12, "bold"), state="readonly",
                          readonlybackground="white")
    path_entry.pack(side=tk.LEFT, padx=5, ipady=25)
    # 創(chuàng)建瀏覽按鈕
    browse_button = tk.Button(path_frame, text="獲取文件夾名", width=100, height=2, bg="#2196F3", fg="white",
                              font=("仿宋", 18, "bold"), command=lambda: browse_folder(path_entry))
    browse_button.pack(side=tk.RIGHT, padx=5)
    #########################################################################################################
    # 增加操作模式選擇區(qū)域
    mode_frame = tk.Frame(window)
    mode_frame.pack(fill=tk.X, pady=20)
    # 模式選擇標(biāo)簽
    mode_label = tk.Label(mode_frame, text="操作模式:", font=("仿宋", 28, "bold"), width=15)
    mode_label.pack(side=tk.LEFT, padx=5)
    # 下拉框選項(xiàng)數(shù)據(jù)
    mode_options = ["添加前綴", "添加后綴", "刪除前綴", "刪除后綴"]
    # 創(chuàng)建下拉框(要用textvariable=mode_var綁定數(shù)據(jù),不然不會(huì)更新)
    mode_combobox = ttk.Combobox(mode_frame, values=mode_options, width=30, style='Centered.TCombobox',
                                 justify="center", state="readonly", font=("仿宋", 28, "bold"), textvariable=mode_var)
    mode_combobox.pack(side=tk.LEFT, padx=15)
    mode_combobox.current(0)  # 設(shè)置默認(rèn)選中
    #########################################################################################################
    # 增加常見分割符區(qū)域
    mode_frame = tk.Frame(window)
    mode_frame.pack(fill=tk.X, pady=20)
    # 模式選擇標(biāo)簽
    mode_label = tk.Label(mode_frame, text="常見分割符", font=("仿宋", 28, "bold"), width=15, anchor="center")
    mode_label.pack(side=tk.LEFT, padx=5)
    # 下拉框選項(xiàng)數(shù)據(jù)
    mode_options = ["_下劃線", "-連字符", ".點(diǎn)號(hào)", " 空格"]
    # 創(chuàng)建下拉框(新增綁定textvariable=separator_var)
    mode_combobox = ttk.Combobox(mode_frame, values=mode_options, width=30, style='Centered.TCombobox',
                                 font=("仿宋", 28, "bold"), state="readonly", justify="center",
                                 textvariable=separator_var)
    mode_combobox.pack(side=tk.LEFT, padx=15)
    mode_combobox.current(0)  # 設(shè)置默認(rèn)選中
    #########################################################################################################
    # 給界面添加確認(rèn)和取消的按鈕
    # 創(chuàng)建按鈕容器框架(實(shí)現(xiàn)更靈活的布局控制)
    button_frame = tk.Frame(window)
    # 固定在窗口底部并設(shè)置縱向間距
    button_frame.pack(side=tk.BOTTOM, pady=20)
    # 創(chuàng)建確認(rèn)和取消按鈕
    confirm_button = tk.Button(button_frame, text="確認(rèn)", width=12, height=2, bg="#4CAF50", fg="white",
                               font=("仿宋", 18, "bold"), command=lambda: on_confirm())  # 綁定確認(rèn)事件處理
    cancel_button = tk.Button(button_frame, text="取消", width=12, height=2, bg="#F44336", fg="white",
                              font=("仿宋", 18, "bold"),
                              command=lambda: window.destroy())  # 直接綁定關(guān)閉窗口的事件
    # 確認(rèn)按鈕(添加pack布局)
    confirm_button.pack(side=tk.LEFT, padx=10, ipady=5)
    # 取消按鈕(添加pack布局)
    cancel_button.pack(side=tk.RIGHT, padx=10, ipady=5)
 
 
# 定義界面框架
class Frame:
    # 創(chuàng)建窗口
    window = tk.Tk()
    # 在Frame類初始化前添加樣式配置代碼
    style = ttk.Style()
    # 設(shè)置主題為clam
    style.theme_use('clam')
    # 配置下拉框主體樣式
    style.configure('Centered.TCombobox', justify="center", foreground="#2c3e50",
                    fieldbackground="white", padding=(0, 15), anchor="center", state="readonly")
    # 配置下拉列表的樣式
    style.configure('Centered.TCombobox.Listbox', foreground="#2c3e50",
                    rowheight=30, anchor="center")
    # 設(shè)置標(biāo)題
    window.title("文件批量重命名工具")
    # 獲取屏幕大小
    screen_width = window.winfo_screenwidth()
    screen_height = window.winfo_screenheight()
    # 計(jì)算所需窗口的相對(duì)大小
    relative_width = int(screen_width * 0.5)
    relative_height = int(screen_height * 0.5)
    # 計(jì)算窗口位于屏幕中央的坐標(biāo)
    relative_x = (screen_width - relative_width) // 2
    relative_y = (screen_height - relative_height) // 2
    # 應(yīng)用窗口尺寸和位置(格式:寬度x高度+X坐標(biāo)+Y坐標(biāo))
    window.geometry(f"{relative_width}x{relative_height}+{relative_x}+{relative_y}")
    # 應(yīng)用組件
    module(window)
    # 運(yùn)行窗口
    window.mainloop()
 
 
def main():
    # 創(chuàng)建窗口
    Frame()
 
 
if __name__ == "__main__":
    main()

測(cè)試

原始文件名

選擇“操作模式”以及“常見分割符”,后點(diǎn)擊“確認(rèn)”按鈕,在輸入框中輸入需要添加或者刪除的字符串。

pycharm中的輸出:

結(jié)果如下圖所示: 

添加后綴操作:

這里之前出現(xiàn)了一個(gè)問(wèn)題,如果文本框沒有輸入的話,他會(huì)返回None,然后把None當(dāng)做字符串進(jìn)行拼接,這里需要避免這種情況。

# 輸入為None不能繼續(xù)運(yùn)行了,否則會(huì)把None當(dāng)做字符串進(jìn)行拼接
if content is None:
    return

對(duì)于后續(xù)還可以通過(guò)修改代碼批量修改文件的擴(kuò)展名。

以上就是通過(guò)Python實(shí)現(xiàn)批量修改文件名前后綴功能的詳細(xì)內(nèi)容,更多關(guān)于Python批量修改文件名前后綴的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Django框架之路由用法

    Django框架之路由用法

    這篇文章介紹了Django框架之路由的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Pytorch 使用 nii數(shù)據(jù)做輸入數(shù)據(jù)的操作

    Pytorch 使用 nii數(shù)據(jù)做輸入數(shù)據(jù)的操作

    這篇文章主要介紹了Pytorch 使用 nii數(shù)據(jù)做輸入數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python使用requests模塊爬取百度翻譯

    Python使用requests模塊爬取百度翻譯

    這篇文章主要介紹了Python使用requests模塊爬取百度翻譯,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 釘釘群自定義機(jī)器人消息Python封裝的實(shí)例

    釘釘群自定義機(jī)器人消息Python封裝的實(shí)例

    今天小編就為大家分享一篇釘釘群自定義機(jī)器人消息Python封裝的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 關(guān)于python基礎(chǔ)數(shù)據(jù)類型bytes進(jìn)制轉(zhuǎn)換

    關(guān)于python基礎(chǔ)數(shù)據(jù)類型bytes進(jìn)制轉(zhuǎn)換

    Python 3.x之后,Python自帶字符默認(rèn)使用utf-8格式編碼和顯示,bytes數(shù)據(jù)類型是utf-8格式的二進(jìn)制形式的不可變序列,需要的朋友可以參考下
    2023-05-05
  • python實(shí)現(xiàn)兩張圖片拼接為一張圖片并保存

    python實(shí)現(xiàn)兩張圖片拼接為一張圖片并保存

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)兩張圖片拼接為一張圖片并保存,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • PyQt5主窗口動(dòng)態(tài)加載Widget實(shí)例代碼

    PyQt5主窗口動(dòng)態(tài)加載Widget實(shí)例代碼

    這篇文章主要介紹了PyQt5主窗口動(dòng)態(tài)加載Widget實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • python實(shí)現(xiàn)楊輝三角思路

    python實(shí)現(xiàn)楊輝三角思路

    本文給大家分享的是作者使用python實(shí)現(xiàn)楊輝三角的思路,非常的實(shí)用,有需要的小伙伴可以參考下
    2017-07-07
  • Python Pivot table透視表使用方法解析

    Python Pivot table透視表使用方法解析

    這篇文章主要介紹了Python Pivot table透視表使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 使用python進(jìn)行時(shí)間序列預(yù)測(cè)的流程

    使用python進(jìn)行時(shí)間序列預(yù)測(cè)的流程

    使用 Python 進(jìn)行時(shí)間序列預(yù)測(cè)是一個(gè)非常常見的任務(wù),可以應(yīng)用于各種領(lǐng)域,時(shí)間序列預(yù)測(cè)的方法有很多,包括統(tǒng)計(jì)方法、機(jī)器學(xué)習(xí)方法、以及深度學(xué)習(xí)方法,下面是一個(gè)簡(jiǎn)單的時(shí)間序列預(yù)測(cè)流程示例,需要的朋友可以參考下
    2024-09-09

最新評(píng)論