其實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)) + ' 張圖片')