본문 바로가기
컴퓨터관련/Python

python에서 파일 및 폴더 삭제하기

by 빛과 어둠사이 2020. 3. 3.
728x90
반응형
SMALL

오늘은 파이썬에서의 파일 및 폴더를

삭제하는 방법을

정리해보려고 합니다.


외부와 파일로 데이터를 주고받는 경우

혹은 로그파일을 생성하거나 했을 경우 등

파일 및 폴더를 생성하고

삭제해야 하는 경우는

은근 많이 발생이 됩니다.


그래서 이번에는 python에서의

File 및 Directory 삭제 방법을

정리해보려고 합니다.




파이썬에서 파일 및 디렉토리 삭제를 하는 것은

2가지 방법이 있습니다.

우선, 제가 아는 것은 2가지 방법이 있습니다.


그래서 이 2가지 방법에 대해서

모두 정리를 해보고자 합니다.



우선, 파일 및 디렉토리 삭제를 위해

테스트용으로 D드라이브에 

파일 및 폴더를 생성하였습니다.



위처럼 생성을 해보았습니다.

그리고 이제 

실제 파일 삭제하는 방법을

정리해보도록 하겠습니다.




1. OS모듈

OS모듈을 사용하여

파일 및 디렉토리를 삭제할 수 있습니다.


1-1. 파일 삭제하기

OS모듈을 사용해서

파일을 삭제할 수 있습니다.

OS모듈에서 제공하는 remove() 함수를 이용하여

파일을 삭제할 수 있습니다.


파일을 삭제하는 소스는

다음과 같습니다.

import os

os.remove(r"D:\test\test.txt")

위처럼 하면 됩니다.

그러면 위 테스트용으로 생성한

test.txt 파일을

삭제하는 것입니다.


실행을 하면

결과는 아래처럼 나오게 됩니다.



위처럼 별다른 말이 없습니다.

그러면 이제

실제로 파일이 잘 삭제가 되었는지

확인을 해보도록 하겠습니다.


위에 임시로 만들었던 폴더로

이동을 하였습니다.



위처럼 test.txt File이 삭제가 된 것을

확인할 수 있습니다.

remove() 함수를 이용하여 

파일을 삭제하면 됩니다.





1-2. 폴더 삭제하기

이번에는 폴더를 삭제하는 방법을

확인해보도록 하겠습니다.


OS모듈에서의 rmdir() 함수를 이용하여

디렉토리를 삭제할 수 있습니다.

이제 사용 예제를

확인해보도록 하겠습니다.

import os

os.rmdir(r"D:\test")

위처럼 코딩을 하였습니다.

그리고 실행을 하면

결과는 다음과 같이 나오게 됩니다.



위처럼 별다른 말은 없습니다

위에 파일 삭제와 마찬가지로

별다른 문구는 없네요.

그러면 이제 삭제가 되었는지

확인을 하기 위해

D드라이브로 가보았습니다.



위처럼 t로 시작하는 폴더가 없는 것을

확인할 수 있습니다.

이를 보면서 디렉토리가 정상적으로

삭제가 된 것을

확인할 수 있습니다.




1-3. 폴더 삭제 오류

우선 폴더 및 파일이 삭제가 되었기 때문에

다시 파일 및 폴더를 생성하였습니다.



그리고 1-2에서 보았던 rmdir()함수를 이용하여

또다시 디렉토리를 삭제해보려고 합니다.

import os

os.rmdir(r"D:\test")

위처럼 코딩을 하고

실행을 해 보았습니다.

위 소스는 1-2에서 썼던 소스와

동일한 소스입니다.


그리고 실행을 하면

결과는 아래처럼 나오게 됩니다.


---------------------------------

예외가 발생했습니다. OSError

[WinError 145] 디렉터리가 비어 있지 않습니다: 'D:\\test'

File "D:\python\test02.py", line 3, in <module> os.rmdir(r"D:\test")

---------------------------------


위처럼 이렇게 에러가 발생이 되는 것을

확인할 수 있습니다.


즉, OS모듈에서의 

rmdir() 함수의 경우,

File이 있으면

이렇게 오류가 발생되는 것을

확인할 수 있습니다.


그러니 파일을 먼저 전부 삭제해주시고

그 다음에 디렉토리를 삭제해주셔야 

정상적으로 삭제가 가능합니다.




2. Shutil모듈

이번에는 shutil 모듈을 사용해서

파일 및 디렉토리를

삭제하는 방법을

정리해보도록 하겠습니다.


먼저 OS모듈을 사용하여 파일 및 폴더를 삭제할때와

shutil모듈을 사용하여 파일 및 폴더를 삭제할 때의

차이점을 말하도록 하겠습니다.


1-3에서 본 것과 같이

OS모듈을 사용할 때는

폴더 안에 파일이 있는 상황에서

폴더를 Delete 하려고 하면

에러가 발생을 합니다.

하지만 shutil 모듈을 사용하면

파일이 있어도

Delete가 성공적으로 됩니다.

이것이 제일 큰 차이입니다.



그러면 shutil 모듈에서의

삭제하는 방법을 정리해보도록 하겠습니다.

shutil 모듈에서

파일 및 폴더를 삭제할 때는

rmtree() 함수를 이용하여

삭제를 하고 있습니다.


이제 실제 사용 예제를 확인해보도록 하겠습니다.

사용방법은 다음과 같습니다.

import shutil

shutil.rmtree(r"D:\test")

위처럼 코딩을 하면 됩니다.

import 하는 것과

함수 사용한 부분만

다른 상황입니다.

그리고 실행을 하면

결과는 다음과 같이 나옵니다.



위처럼 별다른 문구는 안나옵니다.

역시나 파일이나 폴더를 삭제할 때는

별다른 문구는 안나옵니다.


그러면 이제 D드라이브로 가보도록 하겠습니다.



위처럼 t로 시작된 폴더 자체가

없는 것을 확인할 수 있습니다.


이처럼 문제 없이 삭제가 된 것을

확인할 수 있습니다.






오늘은 python에서의 파일 및 폴더를 삭제하는 방법을

정리해보았습니다.

OS모듈을 사용하는 방법과

Shutil 모듈을 사용하는 방법

두가지를 확인해보았습니다.


이 두가지는 확실한 장단점이 있습니다.

OS모듈의 경우,

파일이 있으면 폴더를 삭제할 수 없음으로

안전성을 더욱 높였다고 할 수 있습니다.

하지만, 편리성에서는 좀 떨어진다고 볼 수 있습니다.



shutil 모듈의 경우,

OS모듈과 정반대라고 보면 됩니다.

파일이 있어도 폴더 삭제가 되면서

편리성을 올렸습니다.

하지만, 파일이 있어도 폴더가 삭제가 되기 때문에

안전성에 있어서는 조금 더 낮다고 볼 수 있습니다.




이렇게 각각의 장단점이 있습니다.

그러니 필요에 따라서

Os모듈을 사용해 파일 및 폴더를 삭제하거나

shutil모듈을 사용해 파일 및 폴더를 삭제하거나

결정을 하시면 되실 것 같습니다.




이상으로 파이썬에서의 파일 및 폴더 삭제하는 방법이였습니다~


728x90
반응형
LIST