1. 압축파일 정리하기
2. 파일명 정리하기
3. 파일명 변경하기
4. 파일 분류 및 이동하기
✔ assert
- 주어진 조건이 True인 확인하고 조건이 False이면 예외를 발생시키는데 사용
- 주로 디버깅 및 텟트 목적으로 코드에서 사용
- 디버그 모드에만 동작되며, 배포시에는 작동되지 않음
※ 과제
위 디렉토리 관리 프로그램을 참고하여 자신의 시나리오를 만들고 파일 관련된 프로그램을 작성해 보자.
import os
import glob
import zipfile
import fnmatch
import pathlib
import shutil
target_path = './music_정리전'
zipfile_path = []
for filename in glob.glob(os.path.join(target_path, '**/*.zip'), recursive=True):
zipfile_path.append(filename)
for filename in zipfile_path:
with zipfile.ZipFile(filename) as myzip:
zipinfo = myzip.infolist()
for info in zipinfo:
myzip.extract(info, os.path.dirname(filename))
def categoryList(target_path):
categories = ['Alan Walker', 'Ariana Grande', 'Dua Lipa', 'Jonas Blue']
category_files = {category: [] for category in categories}
for root, dirs, files in os.walk(target_path):
for file in files:
file_path = os.path.join(root, file)
for category in categories:
if fnmatch.fnmatch(file, f'*{category}*'):
category_files[category].append(file_path)
return category_files
result = categoryList(target_path)
categorylist = list(result.keys()) + ['기타']
new_path = './new_정리'
def makeDir(new_path, categorylist):
for category in categorylist:
new_dir = pathlib.Path(os.path.join(new_path, category))
new_dir.mkdir(parents=True, exist_ok=True)
makeDir(new_path, categorylist)
def moveFile(new_path, target_path, categorylist):
for category in categorylist:
category_dir = os.path.join(new_path, category)
for root, dirs, files in os.walk(target_path):
for file in files:
if category in file:
source_file = os.path.join(root, file)
shutil.move(source_file, category_dir)
moveFile(new_path, target_path, categorylist)
def move_remaining_files(source_dir, target_dir):
for file_name in os.listdir(source_dir):
source_file_path = os.path.join(source_dir, file_name)
shutil.move(source_file_path, target_dir)
source_directory = "./music_정리전/music"
target_directory = "./new_정리/기타"
move_remaining_files(source_directory, target_directory)
print('정리 완료')
프로그램을 실행시키면
- 노래가 있는 압축 파일 해제
- 'new_정리' 폴더가 생성
- 폴더 안에 사전에 입력한 'Alan Walker', 'Ariana Grande', 'Dua Lipa', 'Jonas Blue' 및 '기타'라는 폴더가 추가 생성
- 노래 제목과 폴더명이 동일한 경우 그 폴더로 노래가 이동
- 동일하지 않은 경우 기타 폴더로 분류가 되지 않은 노래가 이동
- 정리 완료 메세지를 띄우고 프로그램 종료
'파이썬' 카테고리의 다른 글
26. 과제-DB(sql)를 이용한 단어장 만들기 (0) | 2024.03.28 |
---|---|
25. 영단어 만들기(기능 추가) 과제 (1) | 2024.03.23 |
23. 파일 입출력 라이브러리 (0) | 2024.03.21 |
22. 변수 타입 어노테이션 (0) | 2024.03.21 |
21. 파일 입출력을 이용한 단어장 만들기 (0) | 2024.03.21 |