最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2025年02月12日 10:44:01   作者:Xin學(xué)數(shù)據(jù)  
這篇文章主要為大家詳細(xì)介紹了如何使用Python的os和shutil庫(kù)實(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)置庫(kù)。

二、梳理需求

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

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

2.1 獲取精修圖名稱

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

假設(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è)庫(kù)和函數(shù)之后,就很簡(jiǎn)單了。

假設(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)的代碼比較簡(jiǎ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é)果如下:

完美?。。?/p>

四、總結(jié)

本文通過 Python 的 os 和 shutil 庫(kù),使用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 使用列表和字典存儲(chǔ)信息的相關(guān)代碼,需要的朋友可以參考下
    2019-07-07
  • Python中if __name__ ==

    Python中if __name__ == "__main__"詳細(xì)解釋

    這篇文章主要介紹了Python中if __name__ == "__main__"詳細(xì)解釋,需要的朋友可以參考下
    2014-10-10
  • 使用pytorch實(shí)現(xiàn)論文中的unet網(wǎng)絡(luò)

    使用pytorch實(shí)現(xiàn)論文中的unet網(wǎng)絡(luò)

    這篇文章主要介紹了使用pytorch實(shí)現(xiàn)論文中的unet網(wǎng)絡(luò),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • django框架用戶權(quán)限中的session緩存到redis中的方法

    django框架用戶權(quán)限中的session緩存到redis中的方法

    今天小編就為大家分享一篇django框架用戶權(quán)限中的session緩存到redis中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python PyMySQL操作MySQL數(shù)據(jù)庫(kù)的方法詳解

    Python PyMySQL操作MySQL數(shù)據(jù)庫(kù)的方法詳解

    PyMySQL是一個(gè)用于Python編程語(yǔ)言的純Python MySQL客戶端庫(kù),它遵循Python標(biāo)準(zhǔn)DB API接口,并提供了許多方便的功能,本文就來和大家簡(jiǎn)單介紹一下吧
    2023-05-05
  • matlab xlabel位置的設(shè)置方式

    matlab xlabel位置的設(shè)置方式

    這篇文章主要介紹了matlab xlabel位置的設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python編寫扎金花小程序的實(shí)例代碼

    python編寫扎金花小程序的實(shí)例代碼

    這篇文章主要介紹了python編寫扎金花小程序的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Python pyinstaller實(shí)現(xiàn)圖形化打包工具

    Python pyinstaller實(shí)現(xiàn)圖形化打包工具

    這篇文章主要介紹了一個(gè)使用Python PYQT5制作的關(guān)于pyinstaller打包工具,代替?zhèn)鹘y(tǒng)的cmd黑窗口模式打包頁(yè)面,實(shí)現(xiàn)更快捷方便的python打包體驗(yàn),希望對(duì)大家有所幫助
    2025-01-01
  • python算法題 鏈表反轉(zhuǎn)詳解

    python算法題 鏈表反轉(zhuǎn)詳解

    這篇文章主要介紹了python算法題 鏈表反轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • window環(huán)境pip切換國(guó)內(nèi)源(pip安裝異常緩慢的問題)

    window環(huán)境pip切換國(guó)內(nèi)源(pip安裝異常緩慢的問題)

    這篇文章主要介紹了window環(huán)境pip切換國(guó)內(nèi)源(pip安裝異常緩慢的問題),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論

长岭县| 沽源县| 乌审旗| 磐安县| 虞城县| 马鞍山市| 五指山市| 樟树市| 台东市| 阳东县| 山阴县| 镇赉县| 仙居县| 洛川县| 柳河县| 宁津县| 随州市| 兰州市| 渑池县| 汪清县| 新竹市| 绵竹市| 弥勒县| 罗江县| 新余市| 集贤县| 顺义区| 电白县| 鱼台县| 泰州市| 碌曲县| 湘西| 夏河县| 绵竹市| 桦南县| 玛曲县| 尉氏县| 新乐市| 淳化县| 宁海县| 工布江达县|