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

Python3如何將源目錄中的圖片用MD5命名并可以設(shè)定目標(biāo)目錄

 更新時(shí)間:2022年02月10日 11:48:45   作者:FungLeo  
這篇文章主要介紹了Python3如何將源目錄中的圖片用MD5命名并可以設(shè)定目標(biāo)目錄,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

將源目錄的圖片用MD5命名并設(shè)定目標(biāo)目錄

嘗試了一下用 python 實(shí)現(xiàn)了一個(gè)生成密碼的程序。感覺還是比較好上手的。但是那個(gè)程序還是非常簡單的一個(gè)小程序。這次我需要實(shí)現(xiàn)一個(gè)更加復(fù)雜的程序,就是整理圖片。

列出需求

  • 將圖片文件用圖片的 md5 值進(jìn)行重命名。
  • 可以設(shè)定源目錄
  • 可以設(shè)定目標(biāo)目錄
  • 可以設(shè)定是移動,還是復(fù)制
  • 參數(shù)可以缺省

列出這些需求,我開始設(shè)計(jì)我的程序。

最終實(shí)現(xiàn)代碼

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import sys
import os
# 獲取文件類型庫
import imghdr
# MD5庫
import hashlib
# 文件操作庫
import shutil
# 設(shè)定默認(rèn)參數(shù)
sourceDir = './'
targetDir = './'
operation = 'move'
images = []
# 用戶操作說明
def Usage():
    print('USAGE: md5img [source dir] [target dir] [-m | -c]')
    sys.exit(0)
# 根據(jù)輸入的參數(shù),進(jìn)行不同的處理
if len(sys.argv) == 1 or len(sys.argv) > 4:
    Usage()
if len(sys.argv) >= 2:
    sourceDir = sys.argv[1]
    targetDir = sys.argv[1]
if len(sys.argv) >= 3:
    targetDir = sys.argv[2]
if len(sys.argv) == 4:
    if sys.argv[3] == '-m':
        operation = 'move'
    elif sys.argv[3] == '-c':
        operation = 'copy'
    else:
        print('Operation method is not defined')
        Usage()
# 找到源目錄下所有的圖片
def findImage(sourceDir):
    # 如果源目錄不存在,則報(bào)錯退出
    if not os.path.exists(sourceDir):
        print('Source directory is not defined')
        Usage()
    # 循環(huán)目標(biāo)目錄中的文件
    for fil in os.listdir(sourceDir):
        # 取得文件的路徑
        filPath = os.path.join(sourceDir, fil)
        # 判斷文件是否為目錄
        if not os.path.isdir(filPath):
            # 判斷文件是否為圖片
            if imghdr.what(filPath) != None:
                # 將圖片插入需要處理的列表
                images.append(filPath)
# 計(jì)算 MD5 值函數(shù)
def calcMD5(filepath):
    with open(filepath,'rb') as f:
        md5obj = hashlib.md5()
        md5obj.update(f.read())
        hash = md5obj.hexdigest()
        return hash
# 處理所有圖片
def md5img(images):
    # 如果目標(biāo)目錄不存在,則報(bào)錯退出
    if not os.path.exists(targetDir):
        print('Target directory is not defined')
        Usage()
    # 循環(huán)需要處理的圖片列表
    for img in images:
        # 根據(jù)圖片的真實(shí)后綴,來確定圖片的后綴,如果是 jpeg 則改成 jpg
        postfix = 'jpg' if imghdr.what(img) == 'jpeg' else imghdr.what(img)
        # os.rename(img, targetDir + '/' + calcMD5(img) + '.' + postfix)
        # 執(zhí)行復(fù)制或者移動操作
        if operation == 'move':
            shutil.move(img, targetDir + '/' + calcMD5(img) + '.' + postfix)
        elif operation == 'copy':
            shutil.copy(img, targetDir + '/' + calcMD5(img) + '.' + postfix)
# 找圖片
findImage(sourceDir)
# 處理圖片
md5img(images)
# 完成
print('Finish')

代碼說明

首先呢是引用各種需要的庫。sys庫和os庫是非?;静⑶页S玫?。然后就是針對各個(gè)需要的功能點(diǎn),找的不同的庫,進(jìn)行引入。

然后,設(shè)定了各種默認(rèn)參數(shù)。需要源目錄,目標(biāo)目錄,操作方法,以及圖片列表,一個(gè)空的數(shù)組。

定義函數(shù)

在 js 中,我們定義一個(gè)函數(shù),用的是 function 。在 python 中,用的是 def。 我現(xiàn)在還不知道 def 代表的是啥意思,如果你知道,在品論中告訴我哈~

其他的內(nèi)容,除了格式差異以外,我感覺和 js 是非常類似的。

但是,在 js 中,函數(shù)放在哪里并不會影響執(zhí)行。但是在 python 中就不一樣了。函數(shù)必須在執(zhí)行的代碼之前定義。否則就會報(bào)錯。

目前我還沒有進(jìn)行多文件的編碼。如果是進(jìn)行多文件的編碼的話,如何組織文件,需要我好好的想一下。

用戶使用說明

首先,我定義了一個(gè)用戶使用說明的函數(shù)。內(nèi)容非常簡單,就是告訴使用者,這個(gè)函數(shù)的使用方法。

然后,就是各種終端錄入的參數(shù)的判斷處理,根據(jù)錄入的參數(shù),重設(shè)我的默認(rèn)值,如果是參數(shù)出錯了,則需要告訴用戶,出錯了。

三元運(yùn)算

python 中沒有三元運(yùn)算???但是有類似的處理方法,只是語法不一樣而已。

比如在 js 中,三元運(yùn)算如下:

res = a > 5 ? 0 : 1

但是在 python 中沒有三元運(yùn)算,我們可以這樣寫:

res = 0 if a > 5 else 1

比較怪異,但是比照著,也是能寫的。

判斷一個(gè)路徑是否存在

我們可以使用 os.path.exists(path) 來判斷 path 這個(gè)路徑是否存在。

找出來一個(gè)路徑下的所有文件或者目錄

os.listdir(path) 就可以列出 path 這個(gè)目錄下面所有的文件或者目錄了。這里得到的是一個(gè)數(shù)組。

我比較習(xí)慣 js 的說法。 python 中說這是列表……

判斷一個(gè)文件是否為圖片,如果為圖片,則輸出圖片的類型

這需要使用一個(gè)庫 imghdr,我們在代碼的開頭引用進(jìn)來即可。

然后我們可以使用 imghdr.what(filPath) 來看文件是否為圖片,如果輸出的是 None 則表示不是圖片。如果是圖片的話,則會輸出圖片的類型。比如 jpg 圖片會輸出 jpeg 這樣。

其他小結(jié)

關(guān)鍵是找到對應(yīng)的庫,然后看庫的方法就可以了。目前我很不熟悉,畢竟是剛剛開始學(xué)。但是通過 google 搜索,是可以很快找到解決各種問題的方法的。

唯一需要注意的是,需要加上關(guān)鍵詞 python3 來避免看到 python2 的內(nèi)容。我就遇到好幾個(gè) 2 的代碼,導(dǎo)致程序跑不起來出錯的問題。

其他的說明我的注釋里面已經(jīng)說得非常清楚了。

Python修改圖片md5

import time
writefile = int(time.time * 1000)
with open(path,"a") as f:
? ? f.write(str(writefile))

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python打包成 .so的實(shí)現(xiàn)步驟

    python打包成 .so的實(shí)現(xiàn)步驟

    當(dāng)需要將產(chǎn)品發(fā)布到外部環(huán)境的時(shí)候,源碼的保護(hù)尤為重要,因此需要將python文件打成so文件的目的就是為了保護(hù)源碼,本文主要介紹了python打包成.so的實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2023-12-12
  • Python中使用支持向量機(jī)(SVM)算法

    Python中使用支持向量機(jī)(SVM)算法

    這篇文章主要為大家詳細(xì)介紹了Python中使用支持向量機(jī)SVM算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 如何用python批量發(fā)送工資條郵件

    如何用python批量發(fā)送工資條郵件

    大家好,本篇文章主要講的是如何用python批量發(fā)送工資條郵件,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Django?ORM?事務(wù)和查詢優(yōu)化的操作方法

    Django?ORM?事務(wù)和查詢優(yōu)化的操作方法

    這篇文章主要介紹了Django?ORM?事務(wù)和查詢優(yōu)化,包括事務(wù)操作、ORM 惰性查詢及only與defer相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 使用python繪制二元函數(shù)圖像的實(shí)例

    使用python繪制二元函數(shù)圖像的實(shí)例

    今天小編就為大家分享一篇使用python繪制二元函數(shù)圖像的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 利用PyCharm操作Github(倉庫新建、更新,代碼回滾)

    利用PyCharm操作Github(倉庫新建、更新,代碼回滾)

    這篇文章主要介紹了利用PyCharm操作Github(倉庫新建、更新,代碼回滾),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python 分享10個(gè)PyCharm技巧

    Python 分享10個(gè)PyCharm技巧

    這篇文章主要介紹了Python 分享10個(gè)PyCharm技巧,今天要跟大家分享幾個(gè)PyCharm小技巧,幫助大家提升工作效率!,需要的朋友可以參考下
    2019-07-07
  • Python實(shí)現(xiàn)中英文全文搜索的示例

    Python實(shí)現(xiàn)中英文全文搜索的示例

    這篇文章主要介紹了Python實(shí)現(xiàn)中英文全文搜索的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12
  • Pygame實(shí)戰(zhàn)之迷宮游戲的實(shí)現(xiàn)

    Pygame實(shí)戰(zhàn)之迷宮游戲的實(shí)現(xiàn)

    玩迷宮游戲長大的我們,欣慰地看到,下一代仍熱愛著這個(gè)經(jīng)典游戲。本文將通過Python中的Pygame庫制作這一經(jīng)典的游戲,需要的可以參考一下
    2022-02-02
  • Python中使用print函數(shù)進(jìn)行不換行打印問題

    Python中使用print函數(shù)進(jìn)行不換行打印問題

    這篇文章主要介紹了Python中使用print函數(shù)進(jìn)行不換行打印問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評論