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

Python實(shí)現(xiàn)移動(dòng)指定圖片到指定目錄

 更新時(shí)間:2025年02月12日 10:44:01   作者:Xin學(xué)數(shù)據(jù)  
這篇文章主要為大家詳細(xì)介紹了如何使用Python的os和shutil庫實(shí)現(xiàn)自動(dòng)化查找和移動(dòng)圖片功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

一、背景

前陣子,拍了200張照片,然后挑了20張找人精修下,今天修完發(fā)來給我,然后我先對(duì)比一下和原圖的效果差異,以便做驗(yàn)收。

由于前期挑出來的照片沒有留檔,也就是說,還是在200張的源文件夾里,怎么從這200張圖片中找出這20張呢?

幸運(yùn)的是,精修完的圖沒有修改文件名,能夠通過文件名去源文件夾找出來。那么,如何才能快速地找出這20張照片呢?

一張張搜唄!不行,太費(fèi)事了!

那能不能讓Python 來搭把手呢?當(dāng)然可以!

環(huán)境說明:Python 3.9.12、windows11 64位,該代碼應(yīng)該通用,是一些內(nèi)置庫。

二、梳理需求

其實(shí)很簡單,前面也介紹了:就是拿精修圖的文件名去源文件夾中找,然后把文件移動(dòng)到指定的文件夾。

拆分步驟來看就是:獲取精修圖的名稱->在源文件夾查找->將源文件找到的圖片放到指定的文件夾中。

2.1 獲取精修圖名稱

獲取精修的20張圖的名稱,可以使用os.listdir(path)直接全部取出來,只需要傳入對(duì)應(yīng)的path即可,這個(gè)比較簡單。

假設(shè)精修圖的路徑是D:\精修圖,則代碼可以這么寫:

import os
# 精修圖路徑
trim_catalog = r'D:\精修圖'
# 讀取所有文件
trim_files = os.listdir(trim_catalog)
print(trim_files)

2.2 源文件夾查找圖片

怎么在源文件查找圖片呢?

有一種方案就是先把源文件夾的 200 張圖片的名稱也讀取出來,然后逐一和精修圖的名稱進(jìn)行匹配,匹配上了就返回。

這是比較常規(guī)的思路,有點(diǎn)像模擬在文件夾中搜索的過程。(示例圖片是 AI 畫的,非實(shí)際操作圖)

這種方案固然可以,但是感覺不夠優(yōu)雅,有沒有更好的方案呢?

下面是我的處理方案:

假設(shè)源文件夾的路徑是D:\源文件夾。

其實(shí)沒有必要去搜索,直接將路徑拼接起來,然后傳遞到后面的環(huán)節(jié)即可。

import os
# 精修圖的名稱
trim_file = '1.png'
# 源文件夾路徑
src_catalog = r'D:\源文件夾'
# 拼接路徑
src_file = os.path.join(src_catalog, trim_file)
print(src_file)

這樣可能會(huì)出現(xiàn)一個(gè)問題就是圖片不存在導(dǎo)致拋出異常,不過這沒關(guān)系,既然都能預(yù)料到,那就加一層報(bào)錯(cuò)處理即可(后面說明)。

2.3 將圖片放到指定文件夾

將圖片移動(dòng)到目標(biāo)文件夾,這個(gè)可以通過shutil.move(old_file, new_file)實(shí)現(xiàn)。

了解了這個(gè)庫和函數(shù)之后,就很簡單了。

假設(shè)目標(biāo)存放精修圖的原圖的路徑是D:\源文件夾\目標(biāo)圖,則代碼如下:

import shutil, os
# 目標(biāo)目錄
dst_catalog = r'D:\源文件夾\目標(biāo)圖'

# 精修圖的名稱
trim_file = '1.png'

# 拼接路徑,精修圖原圖新的存放路徑
dst_file = os.path.join(dst_catalog, trim_file)

# 移動(dòng)文件,src_file 是精修圖原圖在源文件夾中的存放路徑,在上一小節(jié)(源文件夾查找圖片)中的拼接的路徑
shutil.move(src_file, dst_file)

三、整合并測(cè)試

至此,三段小代碼都完成了,合并起來就是:

注:將trim_file = '1.png'改為trim_file = trim_files[0]

# 獲取精修圖名稱
import os
# 精修圖路徑
trim_catalog = r'D:\精修圖'
# 讀取所有文件
trim_files = os.listdir(trim_catalog)
print(trim_files)

# 源文件夾查找圖片
import os
# 精修圖的名稱
trim_file = trim_files[0]
# 源文件夾路徑
src_catalog = r'D:\源文件夾'
# 拼接路徑
src_file = os.path.join(src_catalog, trim_file)
print(src_file)

# 將圖片放到指定文件夾
import shutil, os
# 目標(biāo)目錄
dst_catalog = r'D:\源文件夾\目標(biāo)圖'

# 精修圖的名稱
trim_file = trim_files[0]

# 拼接路徑,精修圖原圖新的存放路徑
dst_file = os.path.join(dst_catalog, trim_file)

# 移動(dòng)文件,src_file 是精修圖原圖在源文件夾中的存放路徑,在上一小節(jié)(源文件夾查找圖片)中的拼接的路徑
shutil.move(src_file, dst_file)

先測(cè)試一下上面的代碼,順利的情況下,以上代碼就可以完成第一張圖片的移動(dòng)任務(wù)了。

那要完成 20 張,就需要對(duì)精修圖進(jìn)行一次遍歷。

加個(gè) for 循環(huán),并將需要循環(huán)執(zhí)行的代碼都整合到循環(huán)中,放到 for 循環(huán)的代碼比較簡單,將拼接和移動(dòng)的代碼放進(jìn)去即可,如下:

import shutil, os

# 精修圖路徑
trim_catalog = r'D:\精修圖'
# 讀取所有精修圖文件
trim_files = os.listdir(trim_catalog)
# 源文件夾路徑
src_catalog = r'D:\源文件夾'
# 目標(biāo)目錄
dst_catalog = r'D:\源文件夾\目標(biāo)圖'

for trim_file in trim_files:
    # 拼接路徑,精修圖原圖 舊 的存放路徑
    src_file = os.path.join(src_catalog, trim_file)
    # 拼接路徑,精修圖原圖 新 的存放路徑
    dst_file = os.path.join(dst_catalog, trim_file)
    # 移動(dòng)文件
    shutil.move(src_file, dst_file)

理想情況下,以上代碼便可完成任務(wù)了,但是不夠強(qiáng)壯!前面也講到了,可能會(huì)出現(xiàn)圖片不存在等可能報(bào)錯(cuò)的情況,為了避免這種情況,需要加個(gè)try…except…進(jìn)行錯(cuò)誤判斷。

import shutil, os

# 精修圖路徑
trim_catalog = r'D:\精修圖'
# 讀取所有精修圖文件
trim_files = os.listdir(trim_catalog)
# 源文件夾路徑
src_catalog = r'D:\源文件夾'
# 目標(biāo)目錄
dst_catalog = r'D:\源文件夾\目標(biāo)圖'

for trim_file in trim_files:
    # 拼接路徑,精修圖原圖 舊 的存放路徑
    src_file = os.path.join(src_catalog, trim_file)
    # 拼接路徑,精修圖原圖 新 的存放路徑
    dst_file = os.path.join(dst_catalog, trim_file)

    try:
        # 移動(dòng)文件
        shutil.move(src_file, dst_file)
        print('完成 %s 文件的移動(dòng)。' % trim_file)
    except:
        print('文件 %s 移動(dòng)失?。。?!' % trim_file)

這樣子可看到哪一些圖片執(zhí)行成功,哪一些執(zhí)行失敗,然后對(duì)執(zhí)行失敗的再進(jìn)行查看是不是文件不存在等情況進(jìn)行處理。但是這樣要一個(gè)個(gè)找,能不能再給一個(gè)報(bào)告之類的呢,再整一下!

import shutil, os

# 精修圖路徑
trim_catalog = r'D:\精修圖'
# 讀取所有精修圖文件
trim_files = os.listdir(trim_catalog)
# 源文件夾路徑
src_catalog = r'D:\源文件夾'
# 目標(biāo)目錄
dst_catalog = r'D:\源文件夾\目標(biāo)圖'

suc_no = 0
err_no = 0
err_file_name = []

for trim_file in trim_files:
    # 拼接路徑,精修圖原圖 舊 的存放路徑
    src_file = os.path.join(src_catalog, trim_file)
    # 拼接路徑,精修圖原圖 新 的存放路徑
    dst_file = os.path.join(dst_catalog, trim_file)

    try:
        # 移動(dòng)文件
        shutil.move(src_file, dst_file)
        print('完成 %s 文件的移動(dòng)。' % trim_file)
        suc_no += 1
    except:
        print('文件 %s 移動(dòng)失?。。。? % trim_file)
        err_no += 1
        err_file_name.append(trim_file)
        
if err_no>0:
    print('最終結(jié)果:成功移動(dòng) %s 個(gè)文件,有 %s 個(gè)文件移動(dòng)失敗。失敗文件為 %s。' % (suc_no, err_no, '、'.join(err_file_name)))
else:
    print('最終結(jié)果:成功移動(dòng) %s 個(gè)文件,無失敗任務(wù)。' % suc_no)

代碼寫好了,下面測(cè)試一下:

在【源文件夾】中放 9 張圖片。

然后復(fù)制三張放到【精修圖】(假設(shè)已精修)

運(yùn)行代碼,結(jié)果如下:

下面我把【精修圖】中的 7.png 修改為 7-1.png ,并將移動(dòng)到【目標(biāo)圖】的三張圖重新放回【源文件夾】,再試試效果

執(zhí)行結(jié)果如下:

完美?。?!

四、總結(jié)

本文通過 Python 的 os 和 shutil 庫,使用os.listdir()、os.path.join()、shutil.move()等方法,實(shí)現(xiàn)了將指定的文件從大文件夾中移動(dòng)到目標(biāo)文件夾中。

os.listdir()用于提取指定路徑的文件的名稱;

os.path.join()用于拼接路徑,以便通過絕對(duì)路徑對(duì)文件進(jìn)行移動(dòng);

shutil.move()用于移動(dòng)文件。

到此這篇關(guān)于Python實(shí)現(xiàn)移動(dòng)指定圖片到指定目錄的文章就介紹到這了,更多相關(guān)Python移動(dòng)圖片到指定目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python妹子圖簡單爬蟲實(shí)例

    python妹子圖簡單爬蟲實(shí)例

    這篇文章主要介紹了python妹子圖簡單爬蟲,實(shí)例分析了Python爬蟲程序所涉及的頁面源碼獲取、進(jìn)度顯示、正則匹配等技巧,需要的朋友可以參考下
    2015-07-07
  • pandas DataFrame 交集并集補(bǔ)集的實(shí)現(xiàn)

    pandas DataFrame 交集并集補(bǔ)集的實(shí)現(xiàn)

    這篇文章主要介紹了pandas DataFrame 交集并集補(bǔ)集的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • python之列表推導(dǎo)式的用法

    python之列表推導(dǎo)式的用法

    這篇文章主要介紹了python之列表推導(dǎo)式的用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • python正則表達(dá)式中匹配次數(shù)與貪心問題詳解(+??*)

    python正則表達(dá)式中匹配次數(shù)與貪心問題詳解(+??*)

    正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配,下面這篇文章主要給大家介紹了關(guān)于python正則表達(dá)式中匹配次數(shù)與貪心問題(+??*)的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • python實(shí)現(xiàn)excel公式格式化的示例代碼

    python實(shí)現(xiàn)excel公式格式化的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)excel公式格式化的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python TKinter彈出式菜單的實(shí)例方法

    python TKinter彈出式菜單的實(shí)例方法

    在本篇文章里小編給大家整理了一篇關(guān)于python TKinter彈出式菜單的實(shí)例方法及相關(guān)代碼,有需要的朋友們可以學(xué)習(xí)下。
    2021-10-10
  • python 用struct模塊解決黏包問題

    python 用struct模塊解決黏包問題

    這篇文章主要介紹了python 用struct模塊解決黏包問題,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • 手把手教你怎么用Python實(shí)現(xiàn)zip文件密碼的破解

    手把手教你怎么用Python實(shí)現(xiàn)zip文件密碼的破解

    之前在家里的老電腦中,發(fā)現(xiàn)一個(gè)加密zip壓縮包,由于時(shí)隔太久忘記密碼了,依稀記得密碼是6位字母加數(shù)字,網(wǎng)上下載了很多破解密碼的軟件都沒有效果,于是想到自己用Python寫一個(gè)暴力破解密碼的腳本,需要的朋友可以參考下
    2021-05-05
  • Python中使用第三方庫xlrd來寫入Excel文件示例

    Python中使用第三方庫xlrd來寫入Excel文件示例

    這篇文章主要介紹了Python中使用第三方庫xlrd來寫入Excel文件示例,本文講解了安裝xlwt、API介紹、使用xlwt寫入Excel文件實(shí)例,需要的朋友可以參考下
    2015-04-04
  • python解釋器spython使用及原理解析

    python解釋器spython使用及原理解析

    這篇文章主要介紹了python解釋器spython使用及原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論