이 글에서는 Python에서 파일과 디렉터리를 삭제(제거)하는 방법을 다룹니다. Python은 파일과 디렉터리를 제거하기 위한 다양한 방법과 기능을 제공합니다. 필요에 따라 파일을 제거할 수 있습니다.
Python에서 제공하는 다양한 방법은 다음과 같습니다.
- os.remove() 사용
- os.rmdir() 사용
- Shutil.rmtree() 사용
- pathlib.Path(empty_dir_path).rmdir() 사용
os.remove() 메소드를 사용하여 파일/디렉터리 삭제
OS 모듈 Python에서는 운영 체제와 상호 작용하는 기능을 제공합니다. os 모듈의 모든 함수는 OS오류 유효하지 않거나 액세스할 수 없는 파일 이름 및 경로 또는 올바른 유형을 가지고 있지만 운영 체제에서 허용되지 않는 기타 인수의 경우.
Python의 os.remove() 메소드 파일 경로를 제거하거나 삭제하는 데 사용됩니다. 이 방법 디렉터리를 제거하거나 삭제할 수 없습니다. . 지정된 경로가 디렉터리이면 메서드에 의해 OSError가 발생합니다.
os.remove() 구문
통사론: os.remove(경로, *, dir_fd = 없음)
매개변수: 길: 파일 경로를 나타내는 경로류 객체입니다. 경로류 객체는 경로를 나타내는 문자열 또는 바이트열 객체입니다.
dir_fd (선택 사항): 디렉터리를 참조하는 파일 설명자입니다. 이 매개변수의 기본값은 없음입니다. 지정된 경로가 절대 경로이면 dir_fd는 무시됩니다.
메모: 매개변수 목록의 '*'는 다음의 모든 매개변수(여기서는 'dir_fd')가 키워드 전용 매개변수이며 위치 매개변수가 아닌 이름을 사용하여 제공될 수 있음을 나타냅니다.
반환 유형: 이 메서드는 어떤 값도 반환하지 않습니다.
예제 1: Python에서 파일 삭제
폴더에 포함된 파일이 다음과 같다고 가정합니다.
위 폴더에서 file1을 삭제하고 싶습니다. 아래는 구현입니다.
파이썬3
# Python program to explain os.remove() method> # importing os module> import> os> # File name> file> => 'file1.txt'> # File location> location>=> 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil/'> # Path> path>=> os.path.join(location,>file>)> # Remove the file> # 'file.txt'> os.remove(path)> |
>
>
산출:
예 2: 절대 경로가 있는 파일 제거
지정된 경로가 디렉터리인 경우.
파이썬3
# Python program to explain os.remove() method> # importing os module> import> os> # Directory name> dir> => 'Nikhil'> # Path> location>=> 'D:/Pycharm projects/techcodeview.com/Authors/'> path>=> os.path.join(location,>dir>)> # Remove the specified> # file path> os.remove(path)> print>(>'% s has been removed successfully'> %> dir>)> # if the specified path> # is a directory then> # 'IsADirectoryError' error> # will raised> # Similarly if the specified> # file path does not exists or> # is invalid then corresponding> # OSError will be raised> |
>
>
산출:
Traceback (most recent call last): File 'osremove.py', line 11, in os.remove(path) IsADirectoryError: [Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil'>
예시 3: 삭제하기 전에 파일이 존재하는지 확인
os.remove() 메서드를 사용하는 동안 오류를 처리합니다.
파이썬3
# Python program to explain os.remove() method> # importing os module> import> os> # path> path>=> 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil'> # Remove the specified> # file path> try>:> >os.remove(path)> >print>(>'% s removed successfully'> %> path)> except> OSError as error:> >print>(error)> >print>(>'File path can not be removed'>)> |
>
>
산출:
[Errno 21] Is a directory: 'D:/Pycharm projects/techcodeview.com/Authors/Nikhil' File path can not be removed>
메모: os.remove()에 대해 자세히 알아보려면 여기를 클릭하세요.
os.rmdir() 메소드를 사용하여 파일/디렉터리 삭제
Python의 os.rmdir() 메소드는 빈 디렉토리를 제거하거나 삭제하는 데 사용됩니다. OS오류 지정된 경로가 빈 디렉터리가 아니면 발생합니다.
os.rmdir() 구문
통사론: os.rmdir(경로, *, dir_fd = 없음)
매개변수:
path: 파일 경로를 나타내는 경로류 객체입니다. 경로류 객체는 경로를 나타내는 문자열 또는 바이트열 객체입니다. dir_fd (선택 사항): 디렉터리를 참조하는 파일 설명자입니다. 이 매개변수의 기본값은 없음입니다. 지정된 경로가 절대 경로이면 dir_fd는 무시됩니다.
메모: 매개변수 목록의 '*'는 다음의 모든 매개변수(여기서는 'dir_fd')가 키워드 전용 매개변수이며 위치 매개변수가 아닌 이름을 사용하여 제공될 수 있음을 나타냅니다.
반환 유형: 이 메서드는 어떤 값도 반환하지 않습니다.
예시 1: 디렉토리에서 모든 디렉토리 삭제
디렉토리가 다음과 같다고 가정합니다.
Geeks 디렉터리를 제거하고 싶습니다. 아래는 구현입니다.
파이썬3
# importing os module> import> os> # Directory name> directory>=> 'Geeks'> # Parent Directory> parent>=> 'D:/Pycharm projects/'> # Path> path>=> os.path.join(parent, directory)> # Remove the Directory> # 'Geeks'> os.rmdir(path)> |
>
>
산출:
예 2: 디렉터리 삭제 중 오류 처리
os.rmdir() 메소드 사용 중 오류 처리,
파이썬3
# Python program to explain os.rmdir() method> # importing os module> import> os> # Directory name> directory>=> 'techcodeview.com'> # Parent Directory> parent>=> 'D:/Pycharm projects/'> # Path> path>=> os.path.join(parent, directory)> # Remove the Directory> # 'techcodeview.com'> try>:> >os.rmdir(path)> >print>(>'Directory '% s' has been removed successfully'> %> directory)> except> OSError as error:> >print>(error)> >print>(>'Directory '% s' can not be removed'> %> directory)> # if the specified path> # is not an empty directory> # then permission error will> # be raised> # similarly if specified path> # is invalid or is not a> # directory then corresponding> # OSError will be raised> |
>
>
산출:
[WinError 145] The directory is not empty: 'D:/Pycharm projects/techcodeview.com' Directory 'techcodeview.com' can not be removed>
메모: os.rmdir()에 대해 자세히 알아보려면 여기를 클릭하세요.
shutdown.rmtree()를 사용하여 파일/디렉터리 삭제
shutdown.rmtree()는 전체 디렉터리 트리를 삭제하는 데 사용됩니다. 경로는 디렉터리를 가리켜야 합니다(디렉토리에 대한 심볼릭 링크는 안 됨).
Shutil.rmtree() 구문
통사론: shutdown.rmtree(경로,ignore_errors=False, onerror=없음)
매개변수:
path: 파일 경로를 나타내는 경로류 객체입니다. 경로류 객체는 경로를 나타내는 문자열 또는 바이트열 객체입니다. ignore_errors:ignore_errors가 true인 경우 제거 실패로 인한 오류는 무시됩니다. onerror:ignore_errors가 false이거나 생략된 경우 onerror에 지정된 핸들러를 호출하여 이러한 오류를 처리합니다.
디렉토리와 그 안에 포함된 파일을 삭제합니다.
예시 1:
디렉토리와 하위 디렉토리가 다음과 같다고 가정합니다.
# 상위 디렉터리:
# 상위 디렉터리 내의 디렉터리:
# 하위 디렉터리 내부의 파일:
예: 디렉터리에서 모든 파일 삭제
Authors 디렉터리를 제거하고 싶습니다. 아래는 구현입니다.
파이썬3
자바 멀티스레딩
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # location> location>=> 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path>=> os.path.join(location,>dir>)> # removing directory> shutil.rmtree(path)> |
>
>
산출:
예시 2: 디렉터리 삭제 중 오류 무시
ignore_errors = True를 전달합니다.
파이썬3
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # location> location>=> 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path>=> os.path.join(location,>dir>)> # removing directory> shutil.rmtree(path, ignore_errors>=>False>)> # making ignore_errors = True will not raise> # a FileNotFoundError> |
>
>
산출:
역추적(가장 최근 호출 마지막): File D:/Pycharm projects/gfg/gfg.py, line 16, in shutdown.rmtree(path,ignore_errors=False) File C:UsersNikhil AggarwalAppDataLocalPrograms PythonPython38-32libshutil.py, 730행, rmtree return _rmtree_unsafe(path, onerror) 파일 C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py , 589행, _rmtree_unsafe onerror(os.scandir, path, sys.exc_info()) 파일 C:UsersNikhil AggarwalAppDataLocalProgramsPythonPython38-32libshutil.py, 586행, _rmtree_unsafe에서 os.scandir(path)를 scandir_it로 사용: FileNotFoundError: [WinError 3] 시스템이 지정된 경로를 찾을 수 없습니다: 'D:/Pycharm projects/techcodeview.com/Authors'
예시 3: 예외 처리기
onerror에서는 세 개의 매개변수를 포함해야 하는 함수가 전달되어야 합니다.
- function – 예외를 발생시킨 함수입니다. path – 제거하는 동안 예외를 발생시킨 전달된 경로 이름 exinfo – sys.exc_info()에 의해 발생된 예외 정보
아래는 구현입니다
파이썬3
# Python program to demonstrate> # shutil.rmtree()> import> shutil> import> os> # exception handler> def> handler(func, path, exc_info):> >print>(>'Inside handler'>)> >print>(exc_info)> # location> location>=> 'D:/Pycharm projects/techcodeview.com/'> # directory> dir> => 'Authors'> # path> path>=> os.path.join(location,>dir>)> # removing directory> shutil.rmtree(path, onerror>=>handler)> |
>
>
산출:
내부 처리기 (, FileNotFoundError(2, '지정된 경로를 찾을 수 없습니다.'), ) 내부 처리기 (, FileNotFoundError(2, '지정된 파일을 찾을 수 없습니다.'), )
pathlib.Path(empty_dir_path).rmdir()을 사용하여 파일/디렉터리 삭제
pathlib 모듈의 rmdir() 메서드를 사용하여 빈 디렉터리를 제거하거나 삭제할 수도 있습니다. 먼저 디렉터리 경로를 설정한 다음 해당 경로에서 rmdir() 메서드를 호출합니다.
pathlib.Path의 구문
구문: pathlib.Path(empty_dir_path).rmdir()
매개변수:
empty_dir_path: 빈 디렉터리 경로를 나타내는 경로류 객체입니다. 경로류 객체는 경로를 나타내는 문자열 또는 바이트열 객체입니다.
반환 유형: 이 메서드는 어떤 값도 반환하지 않습니다.
예: rmdir()을 사용하여 빈 디렉토리 삭제
이 예에서는 빈 폴더를 삭제합니다. 폴더가 루트 디렉터리에 있는 경우 폴더 이름만 지정하면 됩니다.
파이썬3
import> pathlib> # Deleting an empty folder> # Put your file address> empty_dir>=> r>'Untitled Folder'> path>=> pathlib.Path(empty_dir).rmdir()> print>(>'Deleted '%s' successfully'> %> empty_dir)> |
>
>
산출:
Deleted 'Untitled Folder' successfully>