나만의 디렉토리 관리 프로그램 만들기
이번에는 디렉토리 정리를 해보겠다.
이제까지 쌓여온 연도별 파일을 정리할 것이다.
이 파일들을 년도별로 나눠서 정리하려고 한다.
일단 필요한 모듈을 import 하면서 시작하자. 그냥 생각나는 건 다하면 될듯하다.
그리고 현재 경로가 어딘지 확인 후 정리할 파일의 경로를 변수에 담아준다.
경로를 설정해 줬으면 그 안에 압축파일이 있는지 찾아준다. 나는 19년도 파일이 압축되어 있었다.
zipfileZipFile을 이용하여 압축을 풀어준다.
압축을 풀어서 19년도 파일이 생성됐다.
파일의 이름이 중복되거나 바꾸고 싶은게 있을 수 있다. 그래서 먼저 엑셀을 사용하여 파일의 이름을 변경할 것이다.
엑셀파일에 접근하기 위한 모듈을 import하고 시작하자.
엑셀파일을 만들어주고 그 안에 "파일경로", "파일명(변경전)", "파일명(변경 후)"를 보기 쉽게 넣어서 정리해 주자.
원래 "파일명(변경 후)"에는 아무런 값이 들어가지 않는데 내가 바꿔주고 싶은 이름으로 바꿔서 넣어놨다.
그럼 이제 이 녀석들을 튜플로 묶어서 리스트에 담아야 한다.
리스트로 3가지 값을 담고 확인해 본 결과 잘 담겼다. 너무 길어서 보여줄 수가 없다.
그러면 이제 우리가 바꾸고 싶어 했던 파일명으로 바꿔줘야 할 차례이다.
뭐 굳이 출력을 할 필요는 없다. 하지만 보기 편하니까 넘어가자.
이름을 변경했으면 정리해서 담을 폴더를 만들어줘야 한다.
나는 연도별로 나누기로 했기에 맨 20**들을 뽑아줘야 한다. 그래서 fnmatch로 파일들을 찾아주고 리스트에 담았다.
그리고 이름을 '_'을 기준으로 나누면 인덱스를 사용하여 원하는 값을 가져올 수 있다. "2022_03_01.xlsx" 이게 있다고 생각하면 나눠줬을 때 '2022', '03', '01.xlsx' 이렇게 나눠진다. 그리고 이 녀석들이 리스트에 들어간다. [['2022', '03', '01.xlsx'], ..]
이렇게 들어간다. 그러면 인덱스를 사용해서 맨 처음 연도만 가져오면 된다.
그리고 잡다한 파일은 따로 만들어서 넣기로 하자.
그러면 이제 폴더를 만들기 위해 뽑아놓은 녀석들을 만들어주고 연도에 맞춰서 넣으면 된다.
폴더를 만들 때는 우리가 연도와 '잡다한 파일'이라고 만든 것을 넣어줬던 list를 사용하여 디렉토리를 만들어준다.
pathlib.Path를 사용하여 경로를 만들어주고 그 경로로 디렉토리를 만들어주면 된다.
디렉토리를 만들었으면 반복문을 사용해서 처음에 경로를 설정해 준 곳으로 가서 리스트로 담고, 새로운 딕셔너리 안에 value 값으로 담아준다. key 값은 연도와 "잡다한 파일"을 담아준다. 그러면 여기서 반복문을 돌려 key 값에 맞는 value 값만 넣어주면 자동으로 연도에 맞게 파일이 들어간다.(쉽지 않다..)