rrimyuu 님의 블로그
폴더 내 파일 개수 확인 (USB 파일 전송 중 일부 누락 이슈 발생) 본문
700개 가량 폴더 내 40만 개 이르는 파일이 있었는데, 그중 600개 파일이 전송 중 누락되어 어떤 폴더에서 누락되었는지 찾아야 했음.
1. 700개 가량 폴더가 다 이동되었는지 (D path) 확인함.
import os
import re
folder_list_new = os.listdir("D: path")
folder_list_org = os.listdir("E: path")
# 괄호 내부 내용 추출함. 폴더 이름이 "(order number)_patient name" 으로 구성.
p = re.compile('\(([^)]+)')
list_new = []
list_org = []
#
for name in folder_list_new:
m = p.findall(name)
list_new.append(m[0])
for name in folder_list_org:
m = p.findall(name)
list_org.append(m[0])
# 숫자가 문자 값으로 들어왔으므로 int 로 변경해주었음.
list_new = list(map(int, list_new))
list_org = list(map(int, list_org))
temp = [x for x in list_org if x not in list_new]
print(temp) # list_new 에는 없는 folder number 를 뱉음.
2. 폴더 내 파일 갯수를 세서 비교함. 서로 다른 파일 개수를 가지는 폴더는 단 하나였는데 해당 파일 개수 가지는 폴더를 찾았음.
import glob
folder_list_new = os.listdir("D: path")
cnt_list_new = []
for folder in folder_list_new :
path = 'D: path/' + folder + '/*'
cnt_list_new.append(len(glob.glob(path)))
folder_list_org = os.listdir("E: path")
cnt_list_org = []
for folder in folder_list :
path = 'E: path/' + folder + '/*'
print(path)
cnt_list_org.append(len(glob.glob(path)))
for idx in range(len(folder_list_new)): # 갯수 동일함.
if cnt_list_new[idx] - cnt_list_org[idx] != 0 :
print(cnt_list_new[idx], cnt_list_org[idx])
else :
continue