基于Python開發(fā)簡(jiǎn)單的圖片定位導(dǎo)出小程序
在日常工作中,我們經(jīng)常需要從大量圖片文件中篩選出包含特定名稱或編號(hào)的圖片,比如從一批產(chǎn)品圖片中找出特定型號(hào)的圖片,或者從系列照片中提取特定編號(hào)的照片。手動(dòng)查找不僅效率低下,還容易出錯(cuò)。今天我要分享一個(gè)自己開發(fā)的圖片定位導(dǎo)出小程序,它能幫助你快速篩選并復(fù)制所需的圖片文件。

工具功能介紹
這個(gè)圖片定位導(dǎo)出工具具有以下特點(diǎn):
- 圖形化界面操作,簡(jiǎn)單易用
- 支持批量輸入多個(gè)搜索關(guān)鍵詞(每行一個(gè))
- 精確匹配圖片文件名,避免部分匹配的誤判
- 自動(dòng)創(chuàng)建目標(biāo)文件夾并復(fù)制匹配的圖片
- 詳細(xì)的結(jié)果反饋,包括成功復(fù)制的文件、未找到的關(guān)鍵詞以及找到多個(gè)匹配的關(guān)鍵詞
- 支持多種圖片格式(jpg、jpeg、png、gif、bmp、tiff、webp)

核心技術(shù)實(shí)現(xiàn)
開發(fā)環(huán)境
- Python 3.x
- 依賴庫(kù):tkinter(用于GUI)、os(文件操作)、shutil(文件復(fù)制)、re(正則表達(dá)式)
核心代碼解析
1. 圖片復(fù)制功能實(shí)現(xiàn)
核心函數(shù)copy_images負(fù)責(zé)處理圖片的查找和復(fù)制邏輯:
def copy_images(search_terms, source_dir=None, target_dir=None):
"""復(fù)制包含指定名稱的圖片文件"""
# 處理目錄默認(rèn)值
if not source_dir:
source_dir = os.getcwd()
if not target_dir:
target_dir = os.path.join(source_dir, "篩選出的圖片")
# 確保目標(biāo)文件夾存在
if not os.path.exists(target_dir):
os.makedirs(target_dir)
# 定義圖片文件擴(kuò)展名
image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp')
# 統(tǒng)計(jì)和跟蹤變量
copied_count = 0
copied_files = []
term_matches = {term.strip(): [] for term in search_terms if term.strip()}
not_found_terms = []
multiple_matches_terms = {}
# 導(dǎo)入正則表達(dá)式模塊
import re
# 遍歷源目錄中的所有文件
for filename in os.listdir(source_dir):
# 檢查是否是圖片文件
if filename.lower().endswith(image_extensions):
# 檢查文件名是否包含任何搜索詞
for term in search_terms:
term = term.strip()
if term:
file_base = os.path.splitext(filename)[0] # 獲取不帶擴(kuò)展名的文件名
# 精確匹配邏輯
is_match = False
if term == file_base: # 完全匹配文件名
is_match = True
elif term in re.findall(r'\d+', file_base): # 精確匹配文件名中的某個(gè)數(shù)字部分
is_match = True
elif f"{term}-" in filename or f"-{term}." in filename: # 匹配特定格式
is_match = True
if is_match:
# 記錄匹配信息
term_matches[term].append(filename)
# 復(fù)制文件
source_path = os.path.join(source_dir, filename)
target_path = os.path.join(target_dir, filename)
shutil.copy2(source_path, target_path) # 保留文件元數(shù)據(jù)
copied_count += 1
if filename not in copied_files:
copied_files.append(filename)
# 處理匹配結(jié)果
for term, matches in term_matches.items():
if not matches:
not_found_terms.append(term)
elif len(matches) > 1:
multiple_matches_terms[term] = matches
return copied_count, copied_files, target_dir, not_found_terms, multiple_matches_terms
這個(gè)函數(shù)的關(guān)鍵在于精確匹配邏輯,通過(guò)三種方式確保匹配準(zhǔn)確性:
- 完全匹配文件名(不含擴(kuò)展名)
- 精確匹配文件名中的數(shù)字部分(避免14匹配到140)
- 匹配特定格式(如"term-“或”-term."的形式)
2. GUI界面實(shí)現(xiàn)
使用Tkinter創(chuàng)建圖形化界面,讓操作更加直觀:
class ImageCopyApp:
def __init__(self, root):
self.root = root
self.root.title("圖片復(fù)制工具")
self.root.geometry("600x500")
self.root.resizable(True, True)
# 創(chuàng)建界面元素
main_frame = tk.Frame(root, padx=10, pady=10)
main_frame.pack(fill=tk.BOTH, expand=True)
# 說(shuō)明標(biāo)簽
instruction_label = tk.Label(
main_frame,
text="請(qǐng)輸入要查找的圖片名稱序列,每行一個(gè)。程序?qū)?fù)制包含這些名稱的圖片到新文件夾。\n如果輸入的名稱沒(méi)有找到匹配,或者找到多個(gè)匹配結(jié)果,將會(huì)在結(jié)果中提示。",
wraplength=580,
justify="left",
pady=10,
font=("SimHei", 10)
)
instruction_label.pack(fill=tk.X)
# 輸入框
self.input_frame = tk.Frame(main_frame)
self.input_frame.pack(fill=tk.BOTH, expand=True)
self.search_text = scrolledtext.ScrolledText(self.input_frame, height=10)
self.search_text.pack(fill=tk.BOTH, expand=True, pady=5)
self.search_text.insert(tk.END, "XS977-14\nXS977-25\nXS977-26") # 默認(rèn)示例
# 按鈕
button_frame = tk.Frame(main_frame)
button_frame.pack(fill=tk.X, pady=10)
self.copy_button = tk.Button(
button_frame,
text="復(fù)制圖片",
command=self.copy_images,
width=15,
height=2
)
self.copy_button.pack(side=tk.LEFT, padx=5)
# 結(jié)果顯示
result_label = tk.Label(main_frame, text="操作結(jié)果:")
result_label.pack(anchor=tk.W)
self.result_text = scrolledtext.ScrolledText(main_frame, height=10)
self.result_text.pack(fill=tk.BOTH, expand=True, pady=5)
self.result_text.config(state=tk.DISABLED)
界面設(shè)計(jì)遵循簡(jiǎn)潔實(shí)用原則,主要包含三個(gè)部分:操作說(shuō)明、關(guān)鍵詞輸入?yún)^(qū)和結(jié)果顯示區(qū)。
3. 結(jié)果處理與反饋
程序會(huì)提供詳細(xì)的操作結(jié)果反饋,包括:
- 成功復(fù)制的文件數(shù)量和目標(biāo)路徑
- 已復(fù)制的文件列表
- 未找到匹配的搜索詞
- 找到多個(gè)匹配的搜索詞及其匹配結(jié)果

如果哪個(gè)有問(wèn)題 會(huì)做出提示
使用方法
運(yùn)行程序,界面將顯示一個(gè)文本輸入框和操作按鈕
在輸入框中每行輸入一個(gè)要查找的圖片名稱或編號(hào)(支持示例中的格式)
點(diǎn)擊"復(fù)制圖片"按鈕
程序會(huì)在當(dāng)前目錄創(chuàng)建"篩選出的圖片"文件夾,并將匹配的圖片復(fù)制到該文件夾
操作結(jié)果會(huì)顯示在下方的結(jié)果區(qū)域,包括成功復(fù)制的文件、未找到的關(guān)鍵詞等信息
適用場(chǎng)景
- 攝影師篩選特定編號(hào)的照片
- 設(shè)計(jì)師整理系列設(shè)計(jì)圖
- 電商從業(yè)者提取特定產(chǎn)品圖片
- 任何需要從大量圖片中篩選特定文件的場(chǎng)景
程序已經(jīng)打包 即使電腦沒(méi)有安裝python也可以使用
到此這篇關(guān)于基于Python開發(fā)簡(jiǎn)單的圖片定位導(dǎo)出小程序的文章就介紹到這了,更多相關(guān)Python圖片定位導(dǎo)出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 函數(shù)內(nèi)部修改外部變量的方法
今天小編就為大家分享一篇python 函數(shù)內(nèi)部修改外部變量的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
python封裝json格式字符串并處理單雙引號(hào)問(wèn)題
大家好,本篇文章主要講的是python封裝json格式字符串并處理單雙引號(hào)問(wèn)題,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02
Pytorch參數(shù)注冊(cè)和nn.ModuleList nn.ModuleDict的問(wèn)題
這篇文章主要介紹了Pytorch參數(shù)注冊(cè)和nn.ModuleList nn.ModuleDict的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
詳解python的sorted函數(shù)對(duì)字典按key排序和按value排序
這篇文章主要介紹了詳解python的sorted函數(shù)對(duì)字典按key排序和按value排序,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
python使用百度或高德地圖獲取地理位置并轉(zhuǎn)換
用python處理地理位置是非常常見(jiàn)的需求,下面這篇文章主要給大家介紹了關(guān)于python使用百度或高德地圖獲取地理位置并轉(zhuǎn)換的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
python簡(jiǎn)單獲取數(shù)組元素個(gè)數(shù)的方法
這篇文章主要介紹了python簡(jiǎn)單獲取數(shù)組元素個(gè)數(shù)的方法,實(shí)例分析了Python中l(wèi)en方法的相關(guān)使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-07-07

