python 遍歷指定文件夾下 的指定類型文件

其實python下面找文件還是比較簡單的 ,主要用到的就是 os.listdir(rootDir)這個函數,這個函數會將rootDir文件夾下所有的文件(不管是文件夾還是文件等等) 的名稱存儲在一個list 裏面, 自己訪問的時候記得把 路徑處理好,如下,

for dir_or_file in os.listdir(rootDir):
        filePath = os.path.join(rootDir, dir_or_file)

然後就可以通過 函數os.path.isfile(filePath) 與之對應的還有os.path.isdir(filePath)  來判斷是文件夾還是文件 ,如果是文件夾的話 ,就遞歸調用原函數,如下

searchDirFile(rootDir, fileList, fileType):

這裏說明下參數的作用

rootDir:指你要查找的根目錄,(記得用 "\\" 或者 "/")

fileList: fileList,這裏可以使用全局變量(其實不用),來存儲你尋找的文件 的地址

注意在Python中,一切皆對象, Python參數傳遞採用的都是“傳對象引用”的方式。實際上,這種方式相當於傳值和傳引用的一種綜合。如果函數收到的是一個可變對象(比如字典或者列表)的引用,就能修改對象的原始值,相當於通過“傳引用”來傳遞對象。如果函數收到的是一個不可變對象(比如數字、字符或者元組)的引用,就不能直接修改原始對象,相當於通過“傳值’來傳遞對象,此時如果想改變這些變量的值,可以將這些變量申明爲全局變量。
 

fileType:你要查找的文件類型, if filePath[-len(fileType):] == fileType: 這裏我做了下處理,所以fileType = "jpg", " .jpg" 類似這樣的加不加 . 都可以 

我這個 deleteFile()函數 是準備來刪除圖片文件(像素 低於 1920*1080)的圖片全部刪除 ,其他的沒什麼好說的了,自己看代碼吧

 

 

 


from bs4 import BeautifulSoup
import requests
import urllib.request
import re, os
from PIL import Image



def searchDirFile(rootDir, fileList, fileType):
    for dir_or_file in os.listdir(rootDir):
        filePath = os.path.join(rootDir, dir_or_file)
        if os.path.isfile(filePath):
            if filePath[-len(fileType):] == fileType:
                fileList.append(filePath)
                #shutil.copyfile(filePath,os.path.join(saveDir,os.path.basename(filePath)))
            else:
                continue
        elif os.path.isdir(filePath):
            searchDirFile(filePath, fileList, fileType)
        else:
            print('not file and dir '+os.path.basename(filePath))


def deleteFile(fileList):
    countDele = 0
    count = 0
    for path in fileList:
        try:
            fp = open(path, 'rb')
            im = Image.open(fp)
            fp.close()
            x, y = im.size
            if x < 1920 or y < 1080:
                os.remove(path)
                countDele += 1
                count += 1
                if count == 100:
                    print('已刪除 100 張圖片')
                    count = 0
        except Exception:
            continue
    return countDele



if __name__ == "__main__":
    fileList = list()
    path = 'D:\\software_study\\PYTHON\\Project\\DownloadPic'
    searchDirFile(path, fileList, '.jpg')   
    print('已刪除 ' + str(deleteFile(fileList)) + ' 張圖片')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章