通過Python實(shí)現(xiàn)批量修改文件名前后綴功能
功能實(shí)現(xiàn)
要實(shí)現(xiàn)的功能其實(shí)很簡單,通過Python代碼獲取文件夾的路徑,通過循環(huán)處理該文件夾中所有文件的名稱,之后對文件名進(jìn)行更新即可,整個(gè)撰寫代碼是通過人工加上ai的方式進(jìn)行的。
添加
添加前后綴,直接對原始的字符串進(jìn)行拼接即可,中間通過分割符來分割,對于添加的字符串不論中文還是英文都需要滿足windows系統(tǒng)文件命名的規(guī)范,項(xiàng)目中通過ai實(shí)現(xiàn)了驗(yàn)證過程,但是可能還是不完善。
# 添加前綴
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"無法重命名 {filename}:\n{str(e)}\n"
"可能原因:\n"
"1. 文件正在被其他程序使用\n"
"2. 沒有寫入權(quán)限\n"
"3. 文件名包含系統(tǒng)保留字符")
break # 遇到錯(cuò)誤中止處理刪除
刪除前后綴即對字符串進(jìn)行分割操作。
# 刪除前綴使用split(從左分割)
parts = base_name.split(f"{content}{selected_separator}", 1)
# 刪除后綴使用rsplit(從右分割)
parts = base_name.rsplit(f"{selected_separator}{content}", 1)沒想到這么快在使用過程中出現(xiàn)問題 ,這個(gè)直接分割可能出現(xiàn)中間截取的情況,比如“專題01 物質(zhì)的組成、性質(zhì)、分類與化學(xué)用語(講)(原卷+解析版)”這個(gè)文件名,如果我是要?jiǎng)h除后綴“ 物質(zhì)”,這個(gè)肯定是無法找到的,但是如果是截取,他則會只保留“專題01”。
修改代碼如下:
elif selected_mode == "刪除前綴":
# 格式驗(yàn)證:必須包含分割符且分割符在content之后
if base_name.startswith(f"{content}{selected_separator}"):
# 計(jì)算前綴長度時(shí)考慮中文等寬字符問題
prefix_length = len(content) + len(selected_separator)
new_base = base_name[prefix_length:]
# 增加空文件名校驗(yàn)
if not new_base:
print(f"警告:刪除前綴后文件名為空,跳過 {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ì)算后綴長度(考慮多語言字符)
suffix_length = len(suffix_pattern)
new_base = base_name[:-suffix_length]
# 空文件名防御機(jī)制
if not new_base.strip(): # 處理純空白字符情況
print(f"危險(xiǎn)操作:刪除后綴后文件名為空,跳過 {filename}")
continue
else:
print(f"未找到匹配后綴:{suffix_pattern}")
continue當(dāng)然在刪除前還需要對文件名進(jìn)行驗(yàn)證,看是否有符合的前后綴以及是否和其他文件名沖突。
# 前綴驗(yàn)證
if f"{content}{selected_separator}" in base_name:不論是添加還是刪除操作都需要檢測文件名是否沖突。
# 檢測文件名沖突
if os.path.exists(new_path):
# 彈出二次確認(rèn)對話框
confirm = messagebox.askyesno(
"確認(rèn)覆蓋",
f"文件 '{new_name}' 已存在!\n"
f"原文件:{filename}\n"
f"新文件:{new_name}\n\n"
"是否覆蓋已有文件?",
icon='warning'
)
if not confirm:
print(f"跳過已存在文件:{new_name}")
continue圖形界面
定義界面
對于這些框架的代碼,使用ai還是比較容易實(shí)現(xiàn),就是調(diào)試起來有點(diǎn)麻煩,不能無腦丟給ai,還需要自己進(jìn)行分析,通過電腦界面來對窗口的界面和位置進(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ì)算所需窗口的相對大小
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()定義組件
主要就是涉及到了文本框、按鈕和下拉框的布局,需要對文本框修改成只讀的屬性,文件夾路徑
操作模式和分割符就沒有進(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ù),不然不會更新)
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)號", " 空格"]
# 創(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:
# 非法字符檢測(保持原邏輯)
illegal_chars = set('\\/:*?"<>|')
if any(char in illegal_chars for char in text):
return False
# 保留名稱檢測(保持原邏輯)
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)長度檢測(基于字符數(shù)而非字節(jié)數(shù))
# Windows允許最多255個(gè)字符(包括中文)
if len(text) > 255:
return False
# 3. 檢查首尾空格(中文文件名常見問題)
if text.strip() != text:
return False
# 4. 檢查末尾點(diǎn)號(.test.txt. 這種形式)
if text.endswith('.') or text.startswith('.'):
return False
return True
# 用文本框獲取添加或者刪除的字符串
def getTextbox(parent_window=None):
# 通過全局控件獲取父窗口
global path_entry # 聲明使用全局路徑輸入框
parent_window = path_entry.winfo_toplevel() # 獲取輸入框所在的頂級窗口
# 添加循環(huán)輸入機(jī)制
while True:
content = simpledialog.askstring(
"輸入內(nèi)容",
"請輸入要添加的字符串(不能包含 \\/:*?\"<>| 等非法字符):", # 添加提示
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. 請勿使用:\\ / : * ? \" < > | 及其全角形式\n"
f"2. 不要使用CON、PRN等保留名稱\n"
f"3. 長度不超過255字符(當(dāng)前:{len(content)})\n"
f"4. 首尾不能有空格\n"
f"5. 不能以點(diǎn)號開頭或結(jié)尾")
else:
return content # 合法輸入退出循環(huán)
# 新增文件夾瀏覽函數(shù)
def browse_folder(entry_widget):
"""打開文件夾選擇對話框"""
folder_path = filedialog.askdirectory(title='請選擇要處理的文件夾')
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("警告", "請先選擇文件夾!")
# 選擇文件夾名
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)行了,否則會把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ì)算前綴長度時(shí)考慮中文等寬字符問題
prefix_length = len(content) + len(selected_separator)
new_base = base_name[prefix_length:]
# 增加空文件名校驗(yàn)
if not new_base:
print(f"警告:刪除前綴后文件名為空,跳過 {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ì)算后綴長度(考慮多語言字符)
suffix_length = len(suffix_pattern)
new_base = base_name[:-suffix_length]
# 空文件名防御機(jī)制
if not new_base.strip(): # 處理純空白字符情況
print(f"危險(xiǎn)操作:刪除后綴后文件名為空,跳過 {filename}")
continue
else:
print(f"未找到匹配后綴:{suffix_pattern}")
continue
# 拼接新的文件名
new_name = f"{new_base}{ext}"
# 拼接新的文件路徑
new_path = os.path.join(folder_path, new_name)
# 檢測文件名沖突
if os.path.exists(new_path):
# 彈出二次確認(rèn)對話框
confirm = messagebox.askyesno(
"確認(rèn)覆蓋",
f"文件 '{new_name}' 已存在!\n"
f"原文件:{filename}\n"
f"新文件:{new_name}\n\n"
"是否覆蓋已有文件?",
icon='warning'
)
if not confirm:
print(f"跳過已存在文件:{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"無法重命名 {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ù),不然不會更新)
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)號", " 空格"]
# 創(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ì)算所需窗口的相對大小
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()測試
原始文件名

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

pycharm中的輸出:

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

添加后綴操作:

這里之前出現(xiàn)了一個(gè)問題,如果文本框沒有輸入的話,他會返回None,然后把None當(dāng)做字符串進(jìn)行拼接,這里需要避免這種情況。
# 輸入為None不能繼續(xù)運(yùn)行了,否則會把None當(dāng)做字符串進(jìn)行拼接
if content is None:
return對于后續(xù)還可以通過修改代碼批量修改文件的擴(kuò)展名。
以上就是通過Python實(shí)現(xiàn)批量修改文件名前后綴功能的詳細(xì)內(nèi)容,更多關(guān)于Python批量修改文件名前后綴的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Flask框架學(xué)習(xí)筆記之使用Flask實(shí)現(xiàn)表單開發(fā)詳解
這篇文章主要介紹了Flask框架學(xué)習(xí)筆記之使用Flask實(shí)現(xiàn)表單開發(fā),結(jié)合實(shí)例形式較為詳細(xì)的分析了flask框架表單模板定義、數(shù)據(jù)提交等相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
Python黑魔法Descriptor描述符的實(shí)例解析
與迭代器和裝飾器等一樣,描述符也是Python編程中的一項(xiàng)高級技巧,這里我們就來講解Python黑魔法Descriptor描述符的實(shí)例解析:2016-06-06
python腳本實(shí)現(xiàn)音頻m4a格式轉(zhuǎn)成MP3格式的實(shí)例代碼
這篇文章主要介紹了python腳本實(shí)現(xiàn)音頻m4a格式轉(zhuǎn)成MP3格式的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
OpenCV之理解KNN鄰近算法k-Nearest?Neighbour
這篇文章主要為大家介紹了OpenCV之理解KNN鄰近算法k-Nearest?Neighbour,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
python爬蟲 基于requests模塊發(fā)起ajax的get請求實(shí)現(xiàn)解析
這篇文章主要介紹了python爬蟲 基于requests模塊發(fā)起ajax的get請求實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
使用Python批量處理Excel文件并轉(zhuǎn)為csv文件示例
這篇文章主要介紹了使用Python批量處理Excel文件并轉(zhuǎn)為csv文件示例,文中通過代碼示例給大家介紹非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-12-12
基于Python的OpenCV骨架化圖像并顯示(skeletonize)
這篇文章主要介紹了基于Python的OpenCV骨架化圖像并顯示(skeletonize),文中附含詳細(xì)的示例代碼,教大家來實(shí)現(xiàn)完成,有需要的可以參考下2021-08-08

