시스템 개발 및 관리/Windows 환경 파일 자동화
파이썬으로 파일과 경로 다루기 완전 정복!
Data Jun
2025. 3. 24. 10:23
업무 자동화, 데이터 정리, 백업 스크립트 등을 만들다 보면 반드시 마주치는 것,
바로 "경로와 파일"을 다루는 일입니다.
이번 포스트에서는 파이썬의 os와 shutil 모듈을 이용해 경로를 다루는 다양한 방법을 정리해볼게요!
폴더 안의 파일 목록 가져오기
import os
contents = os.listdir("data")
print(contents) # ['file1.txt', 'image.png', 'report.docx', ...]
os.listdir()을 사용하면 해당 폴더 안의 파일/폴더 리스트를 문자열로 반환합니다.
절대 경로 알아내기
import os
print(os.path.abspath("filename.txt"))
- 현재 위치 기준으로 절대 경로 전체를 알 수 있어요.
- 자동화 로직을 짤 때 유용!
경로 존재 여부 확인하기
print(os.path.exists("data/report.pdf")) # True or False
파일이 실제로 존재하는지 확인하고, 덮어쓰기를 방지할 수 있습니다.
운영체제 무관한 경로 처리
os.path.sep
print(os.path.sep) # '\' (Windows), '/' (macOS/Linux)
플랫폼에 맞는 경로 구분자 자동 적용!
os.path.join
path = os.path.join("Users", "Codeit", "cat.jpg")
print(path)
# Windows: Users\Codeit\cat.jpg
# macOS : Users/Codeit/cat.jpg
경로를 안전하게 조합할 수 있는 필수 함수!
상대 경로 다루기
"./data/file.txt" # 현재 디렉토리 아래
"../file.txt" # 부모 디렉토리 기준
하위 폴더까지 전부 탐색: os.walk()
for path, dirs, files in os.walk("data"):
print("Path:", path)
print("Folders:", dirs)
print("Files:", files)
os.walk()를 이용하면 하위 디렉토리까지 모두 순회하며 구조를 파악할 수 있어요.
파일 이동: os.rename() vs shutil.move()
os.rename() 사용
os.rename("a.txt", "docs/a_2024.txt")
이름 바꾸기뿐 아니라 파일 이동도 가능!
shutil.move() 사용
import shutil
shutil.move("a.txt", "docs/a_2024.txt")
- 드라이브가 다르거나 파일 시스템이 다를 때 더 안전하게 작동
- 내부적으로 복사 + 삭제를 처리해줍니다.
덮어쓰기 방지 팁
if not os.path.exists("docs/a.txt"):
os.rename("a.txt", "docs/a.txt")
- 같은 이름의 파일이 있을 경우 기존 파일이 삭제될 수 있으므로 주의!
- 항상 os.path.exists()로 존재 여부 체크는 필수!
정리 요약
마무리
파이썬의 os와 shutil 모듈만 잘 활용해도
파일 정리 자동화, 백업, 분류 작업을 훨씬 더 빠르고 정확하게 할 수 있습니다.
조금씩만 연습하면, 여러분도 다운로드 폴더 정리를 단 3초 만에 끝낼 수 있어요!
다음에는 확장자별 자동 분류나 날짜별 백업 자동화도 도전해보세요 🔥