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

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

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

一、背景

前陣子,拍了200張照片,然后挑了20張找人精修下,今天修完發(fā)來給我,然后我先對比一下和原圖的效果差異,以便做驗(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í)很簡單,前面也介紹了:就是拿精修圖的文件名去源文件夾中找,然后把文件移動到指定的文件夾。

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

2.1 獲取精修圖名稱

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

假設(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)

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

2.3 將圖片放到指定文件夾

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

了解了這個庫和函數(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)

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

三、整合并測試

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

注:將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)

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

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

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

加個 for 循環(huán),并將需要循環(huán)執(zhí)行的代碼都整合到循環(huán)中,放到 for 循環(huán)的代碼比較簡單,將拼接和移動的代碼放進(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)
    # 移動文件
    shutil.move(src_file, dst_file)

理想情況下,以上代碼便可完成任務(wù)了,但是不夠強(qiáng)壯!前面也講到了,可能會出現(xiàn)圖片不存在等可能報錯的情況,為了避免這種情況,需要加個try…except…進(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)

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

這樣子可看到哪一些圖片執(zhí)行成功,哪一些執(zhí)行失敗,然后對執(zhí)行失敗的再進(jìn)行查看是不是文件不存在等情況進(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)圖'

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:
        # 移動文件
        shutil.move(src_file, dst_file)
        print('完成 %s 文件的移動。' % trim_file)
        suc_no += 1
    except:
        print('文件 %s 移動失?。。?!' % trim_file)
        err_no += 1
        err_file_name.append(trim_file)
        
if err_no>0:
    print('最終結(jié)果:成功移動 %s 個文件,有 %s 個文件移動失敗。失敗文件為 %s。' % (suc_no, err_no, '、'.join(err_file_name)))
else:
    print('最終結(jié)果:成功移動 %s 個文件,無失敗任務(wù)。' % suc_no)

代碼寫好了,下面測試一下:

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

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

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

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

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

完美?。?!

四、總結(jié)

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

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

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

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

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

相關(guān)文章

最新評論

桐梓县| 永德县| 黔江区| 准格尔旗| 罗定市| 肇庆市| 海南省| 白河县| 景德镇市| 浮梁县| 长宁区| 渑池县| 奉贤区| 溆浦县| 桓台县| 百色市| 吐鲁番市| 元氏县| 通州市| 且末县| 镇沅| 罗城| 宝山区| 斗六市| 固原市| 镇巴县| 囊谦县| 墨竹工卡县| 阳东县| 曲阜市| 佛教| 周至县| 焦作市| 兰西县| 阳江市| 栾城县| 天全县| 和田县| 桃园市| 衡东县| 高阳县|