rrimyuu 님의 블로그

폴더 내 파일 개수 확인 (USB 파일 전송 중 일부 누락 이슈 발생) 본문

Python/Error Solution

폴더 내 파일 개수 확인 (USB 파일 전송 중 일부 누락 이슈 발생)

rrimyuu 2024. 7. 15. 13:39

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