차밍이
[Python] 파일 및 폴더 디렉토리 삭제하는 법 총정리 본문
목차
이번 게시글을 통해 파이썬을 사용해서 파일 및 폴더를 삭제하는 방법에 대해서 알아보겠습니다.
- 특정 파일을 삭제하는 방법 :
os.remove
&os.unlink
- 디렉토리 삭제 방법 :
os.rmdir
&os.removedir
- 디렉토리와 내부 파일을 모두 삭제하는 방법 :
shutil.rmtree
- Error 대처 방법
- 전체 정리 소스코드
1. File 삭제 방법
os.remove('file_path')
os.unlink('file_path')
file_path
부분에 "E:/Data/Combine/History"
이와 같은 절대 경로 혹은 "Combine/History"
이와 같은 상대 경로를 모두 인식할 수 있습니다.
os.remove
와 os.unlink
는 같은 의미로 사용되며, 같은 기능을 합니다.
unlink
가 UNIX 환경에서 더 적합하다고 합니다.
2. Directory 삭제 방법 / Folder 삭제 방법
os.rmdir('empty_directory_path')
os
모듈을 사용해서 디렉토리를 삭제할 수 있습니다.
empty_directory_path
부분에 삭제할 경로의 주소를 적어주면 됩니다.
os.rmdir
의 경우 빈 디렉토리만 삭제할 수 있습니다.
하위 디렉토리 혹은 파일이 존재하면 삭제되지 않고 Error를 발생시킵니다.
비어있지 않은 경우 삭제를 원하면 3번의 방법을 사용하면 됩니다.
3. 파일과 디렉토리 모두 삭제 방법
폴더와 내부의 파일들을 모두 삭제하기 위해서는 shutil
모듈을 사용하면 편하게 할 수 있습니다.
import shutil
shutil.rmtree('directory_path')
directory_path
부분에 원하는 폴더의 주소를 넣어주면 됩니다.
그러면 하위 폴더 및 dirs 모두 삭제됩니다.
4. 오류 대처 방법
파이썬을 사용해 파일을 제거하는 과정에서 다양한 오류가 발생하기 쉽습니다.
이러한 경우 대처방법입니다.
4.1 파일 존재 여부 확인
os.path.exists('file_path')
무조건 os.remove
를 사용하면 파일이 존재하지 않을 때, 오류를 발생할 수 있습니다.
그러므로 exist
를 통해서 해당 파일이 존재하는지 먼저 체크하면 방지할 수 있습니다.
4.2 파일인지 확인하기
os.path.isfile('file_path')
os.path.isfile
을 사용해서 file인지 확인할 수 있습니다.
이를 directory인 경우 os.remove
를 수행하면 에러를 발생시킵니다.
따라서 먼저 파일인지 확인 후 제거해주는 것도 좋은 방법입니다.
4.3 디렉토리인지 확인하기
os.path.isdir('directory_path')
디렉토리인지 확인하고 지우면, 파일 제거와 구분해서 사용할 수 있습니다.
4.4 try - except 문 사용하기
굳이굳이 확인하기 귀찮다면 try - except 문을 사용해서 삭제하면 됩니다.
try - except 문을 사용하는 것이 도 Pythonic 한 방법이라고하니 기호에 맞게 사용하시면 되겠습니다.
file_path = "E:/Data/Combine/History/test.txt"
try:
os.remove(file_path)
except:
print('파일이 없는데용 ㅇㅅㅇ??')
5. 종합 소스 코드
import os
import shutil
file_path = "E:/Data/Combine/History/test.txt"
dir_path = "E:/Data/Combine/History"
def delete(path):
if os.path.isfile(path):
os.remove(path)
elif os.path.isdir(path):
shutil.rmtree(path)
else:
raise ValueError("해당 경로를 확인해주세요")
delete(file_path)
delete(dir_path)
위와 같은 코드로 작성해서 파일인 경우와 디렉토리인 경우 모두 문제 없이 삭제할 수 있도록 할 수 있습니다.
'파이썬 > 기본 문법 정리' 카테고리의 다른 글
[Python] SQL 데이터 Pandas DataFrame으로 불러오기 & 저장하기 (0) | 2023.01.31 |
---|---|
[Python] SQlite3 DB에 데이터 저장 및 조회 (1) | 2023.01.28 |
[Python] 랜덤한 데이터로 DataFrame 만들기 (0) | 2023.01.26 |
Pandas DataFrame 성능 빠르게하기 - apply말고 Vectorization쓰자 (2) | 2023.01.02 |
[Python] datetime 모듈 날짜 시간 포맷 맞추기와 포맷 코드 종류 (0) | 2022.07.08 |
[Python] Pandas 판다스는 과연 빠른가 ? 속도확인 value_counts, unique, drop_duplicates (0) | 2022.06.29 |
[Python] 멀티 프로세싱 사용하기 - 멀티 프로세싱 적용을 위한 함수들 알아보자 (0) | 2022.06.08 |
[Python] 패키지 구성을 위해 __init__ 파일과 __all__에 대해 알아보자 (0) | 2022.06.06 |