KDT 수업/수업과제

20230315 파일정리 프로그램 만들어보기

니니는 진짜 전설이다 2023. 3. 16. 17:17

사진파일들을 보고 분류할 파일을 만들고, 사진 종류별로 만들어진 파일 안에 정리하는 프로그램을 만들기로 결정

 

 cuties 파일을 만들어서


 동물들 사진을 넣어줬다

** 프로그램 돌릴 때 한글 오류나길래 파일 이름 영어로 바꿔서 했음

'cat.jpg','twocat.jpg','dog1.jpg','fulldog.jpg','happydog.jpg' 이렇게

 

그다음에 구글코랩에서 하려고 파일 넣어줬다

 

내가 하려는거:

강아지, 고양이, 카피바라 파일 각각 만들기
파일명 보고 
강아지 >> 강아지 파일로 옮기기
고양이 >> 고양이 파일로 옮기기
카피바라 >> 카피바라 파일로 옮기기

import fileinput
import os
import glob
import pathlib
import shutil
import fnmatch

os.getcwd()
>> '/content'

os.listdir(os.getcwd())
>> ['.config', 'drive', 'sample_data']

# 경로 설정
path = '/content/drive/MyDrive/Colab Notebooks/homework/cuties'

files =  os.listdir(path)
files
>> ['카피바라바라바라.jpg', '근엄바라.jpg','cat.jpg','twocat.jpg','dog1.jpg','fulldog.jpg','happydog.jpg']


ani = []
for filename in files:
  if '.jpg' in filename:
    ani.append(filename)

# 분류해서 넣어줄 폴더 만들기
newfolder = ['고양이', '강아지', '카피바라'] 
newpath = []
newdir = []
for i in range(len(newfolder)):
  newpath.append(os.path.join(path, newfolder[i]))
  newdir.append(pathlib.Path(newpath[i]))
  newdir[i].mkdir(parents = True, exist_ok=True)
  
# 만든 폴더에 각 사진파일들 넣어주기
print(os.getcwd())
for filename in files:
  print(filename)
  if fnmatch.fnmatch(filename, '*cat*.jpg'):
      shutil.copy(path +'/' + filename, newpath[0] + '/'+ filename)
      print(1)
  elif fnmatch.fnmatch(filename, '*dog*.jpg'):
      shutil.copy(path +'/' + filename, newpath[1] + '/'+ filename)
      print(2)
  else:
      shutil.copy(path +'/' + filename, newpath[2] + '/'+ filename)
      print(3)
>>
/content
카피바라바라바라.jpg
3
근엄바라.jpg
3
cat.jpg
1
twocat.jpg
1
dog1.jpg
2
fulldog.jpg
2
happydog.jpg
2


잘 된다!!


과제 소감:

처음 딱 만들고 나서 아무리 수정해보고 나갔다 다시 들어오고 온갖걸 다 해봐도 다 else문으로 빠져버려서 머리 아팠다. 같은반 고수님들이 도와주는데도 안돼서 답답하던 중에 선생님이 '파일이름 한글이라 안되는거 아니야?' 하고 가셔서 이름 변경 했더니 바로 됐다! 쏘 다행\^o^/