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

Python3如何將源目錄中的圖片用MD5命名并可以設定目標目錄

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

將源目錄的圖片用MD5命名并設定目標目錄

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

列出需求

  • 將圖片文件用圖片的 md5 值進行重命名。
  • 可以設定源目錄
  • 可以設定目標目錄
  • 可以設定是移動,還是復制
  • 參數可以缺省

列出這些需求,我開始設計我的程序。

最終實現代碼

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import sys
import os
# 獲取文件類型庫
import imghdr
# MD5庫
import hashlib
# 文件操作庫
import shutil
# 設定默認參數
sourceDir = './'
targetDir = './'
operation = 'move'
images = []
# 用戶操作說明
def Usage():
    print('USAGE: md5img [source dir] [target dir] [-m | -c]')
    sys.exit(0)
# 根據輸入的參數,進行不同的處理
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):
    # 如果源目錄不存在,則報錯退出
    if not os.path.exists(sourceDir):
        print('Source directory is not defined')
        Usage()
    # 循環(huán)目標目錄中的文件
    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)
# 計算 MD5 值函數
def calcMD5(filepath):
    with open(filepath,'rb') as f:
        md5obj = hashlib.md5()
        md5obj.update(f.read())
        hash = md5obj.hexdigest()
        return hash
# 處理所有圖片
def md5img(images):
    # 如果目標目錄不存在,則報錯退出
    if not os.path.exists(targetDir):
        print('Target directory is not defined')
        Usage()
    # 循環(huán)需要處理的圖片列表
    for img in images:
        # 根據圖片的真實后綴,來確定圖片的后綴,如果是 jpeg 則改成 jpg
        postfix = 'jpg' if imghdr.what(img) == 'jpeg' else imghdr.what(img)
        # os.rename(img, targetDir + '/' + calcMD5(img) + '.' + postfix)
        # 執(zhí)行復制或者移動操作
        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玫?。然后就是針對各個需要的功能點,找的不同的庫,進行引入。

然后,設定了各種默認參數。需要源目錄,目標目錄,操作方法,以及圖片列表,一個空的數組。

定義函數

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

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

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

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

用戶使用說明

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

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

三元運算

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

比如在 js 中,三元運算如下:

res = a > 5 ? 0 : 1

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

res = 0 if a > 5 else 1

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

判斷一個路徑是否存在

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

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

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

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

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

這需要使用一個庫 imghdr,我們在代碼的開頭引用進來即可。

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

其他小結

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

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

其他的說明我的注釋里面已經說得非常清楚了。

Python修改圖片md5

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python實現帶下標索引的遍歷操作示例

    Python實現帶下標索引的遍歷操作示例

    這篇文章主要介紹了Python實現帶下標索引的遍歷操作,結合具體實例形式分析了2種帶索引的遍歷操作實現方法及相關操作注意事項,需要的朋友可以參考下
    2019-05-05
  • python 讀取串口數據的示例

    python 讀取串口數據的示例

    這篇文章主要介紹了python 讀取串口數據的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • Python利用wxPython實現ocr識別圖片漢字程序

    Python利用wxPython實現ocr識別圖片漢字程序

    在這篇博客中,我們將介紹一個如何使用wxPython構建的簡單OCR識別圖片漢字應用程序,文章的示例代碼講解詳細,感興趣的小伙伴可以學習一下
    2023-08-08
  • python繪制鉛球的運行軌跡代碼分享

    python繪制鉛球的運行軌跡代碼分享

    這篇文章主要介紹了python繪制鉛球的運行軌跡代碼分享,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 使用Python的音樂播放器GUI的實現

    使用Python的音樂播放器GUI的實現

    本文主要介紹了使用Python的音樂播放器GUI的實現,可以讓您快速輕松地管理和收聽所有音樂文件,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 運動檢測ViBe算法python實現代碼

    運動檢測ViBe算法python實現代碼

    這篇文章主要為大家詳細介紹了運動檢測ViBe算法python實現代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python3學習筆記之列表方法示例詳解

    Python3學習筆記之列表方法示例詳解

    Python3 列表 序列是Python中最基本的數據結構,下面這篇文章主要給大家介紹了關于Python3學習筆記之列表方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下。
    2017-10-10
  • python eval()函數使用詳情

    python eval()函數使用詳情

    這篇文章主要來來聊聊python eval()函數使用方法本文將以python eval()函數使用方法來展開內容,需要的小伙伴可以參考以下文章的內容,希望對你有所幫助
    2021-10-10
  • python實現排序算法解析

    python實現排序算法解析

    這篇文章主要為大家詳細介紹了python實現排序算法的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 在Python3中初學者應會的一些基本的提升效率的小技巧

    在Python3中初學者應會的一些基本的提升效率的小技巧

    這篇文章主要介紹了在Python3中的一些基本的小技巧,有利于剛剛上手Python的初學者提升開發(fā)效率,需要的朋友可以參考下
    2015-03-03

最新評論

苏州市| 溆浦县| 突泉县| 灌阳县| 高青县| 盐城市| 平度市| 万载县| 济阳县| 太原市| 上思县| 江永县| 调兵山市| 孝昌县| 都兰县| 临高县| 逊克县| 富蕴县| 富源县| 常山县| 巴里| 普安县| 石首市| 西藏| 涿鹿县| 营山县| 丹棱县| 英德市| 景泰县| 红河县| 仪陇县| 高安市| 杭锦后旗| 衡阳县| 武胜县| 南江县| 荆门市| 苏州市| 普定县| 全椒县| 梅河口市|