import os
import shutil
import warnings
from pil import image
warnings.filterwarnings("error", category=userwarning)
def is_read_successfully(file):
try:
image.open(file).convert('rgb')
return true
except exception:
return false
def check_images(data_dir, label, backup_dir, delete, backup):
count_error = 0 # 讀取失敗數量
label_dir = os.path.join(data_dir, label) # 當前遍歷 label 資料夾目錄
for parent, dirs, files in os.walk(label_dir):
if files == : # 跳過無檔案的資料夾
continue
for file in files: # 遍歷當前 parent 下的檔案
cur_file = os.path.join(parent, file) # 當前遍歷的檔案路徑
if not is_read_successfully(cur_file): # 判斷檔案讀取是否成功
count_error += 1 # 更新讀取失敗數量
if backup: # 備份檔案
cur_backup_dir = parent.replace(data_dir, backup_dir)
if not os.path.exists(cur_backup_dir):
os.makedirs(cur_backup_dir)
dst_file = os.path.join(cur_backup_dir, file) # 備份檔案路徑
shutil.copy(cur_file, dst_file) # 檔案備份
if delete: # 檔案刪除
os.remove(cur_file)
return count_error
def count_images(data_dir, backup_dir, delete=false, backup=true):
labels = # data_dir 下19類資料的資料夾名
for dir in os.listdir(data_dir): # os.listdir返回資料夾和檔案,只篩選 data_dir 下的資料夾
cur_dir = os.path.join(data_dir, dir)
if os.path.isdir(cur_dir):
print("資料夾\t問題數量")
# 遍歷 19 類資料的資料夾
for label in labels:
count_error = check_images(data_dir, label, backup_dir, delete, backup)
print("{}\t{}".format(label, count_error))
def main():
delete = true # 是否刪除讀取失敗
backup = true # 是否備份讀取失敗
data_dir = r'd:/data/train_val' # 待檢測的資料集目錄
backup_dir = r'd:/data/備份/讀取失敗檔案' # 備份路徑
count_images(data_dir, backup_dir, delete, backup) # 統計讀取失敗數量
if __name__ == '__main__':
main()
資料清洗之資料清洗概述
從廣泛的意義上來講,資料是乙個寬泛的概念,包括但不限於 我們要了解資料清洗,就需理解資料的內涵和外延 常見的資料有 其中,比較重要比較常見的分析資料是 資料。這裡重點介紹一些關於 資料的內容。資料 資料物件由屬性 attributes 及其值 value 構成 資料的特徵 什麼是資料清洗 資料清洗是...
python之資料清洗指令碼
coding utf 8 import numpy as np import pandas as pd na list no clue n a 0 na包含的型別 data pd.read csv 311 service requests.csv na values na list,dtype 列值...
Python資料分析之資料清洗
good data decides good analyse 資料清洗,是資料分析中不可缺少的乙個環節,其處理的好壞在很大程度上影響著資料分析的結果。而且以前聽老師說過資料清洗佔整個的資料分析的一半時間以上 汗。資料清洗也是乙個大學問啊 首先讀入檔案 我們可以看出有乙個nan,李四的數學成績也是不符...