source

파이썬에서 파일이나 폴더를 삭제하려면 어떻게 해야 합니까?

ittop 2023. 5. 7. 11:48
반응형

파이썬에서 파일이나 폴더를 삭제하려면 어떻게 해야 합니까?

파일 또는 폴더를 삭제하려면 어떻게 해야 합니까?


Path Python 3.4+ 모듈의 개체도 다음 인스턴스 메서드를 표시합니다.

파일 삭제를 위한 Python 구문

import os
os.remove("/tmp/<file_name>.txt")

또는

import os
os.unlink("/tmp/<file_name>.txt")

또는

Pathlib 라이브러리 for Python 버전 > = 3.4

file_to_rem = pathlib.Path("/tmp/<file_name>.txt")
file_to_rem.unlink()

Path.unlink(누락_ok=False)

파일 또는 심볼릭 링크를 제거하는 데 사용되는 링크 해제 방법입니다.

  • missing_ok이 false이면(기본값) 경로가 없으면 FileNotFoundError가 발생합니다.
  • missing_ok이 true이면 FileNotFoundError 예외가 무시됩니다(POSIX rm -f 명령과 동일한 동작).
  • 버전 3.8에서 변경됨: missing_ok 매개 변수가 추가되었습니다.

모범 사례

먼저 파일 또는 폴더가 있는지 확인한 후 삭제합니다.두 가지 방법으로 이를 달성할 수 있습니다.

  1. os.path.isfile("/path/to/file")
  2. 사용하다exception handling.

의 예os.path.isfile

#!/usr/bin/python
import os

myfile = "/tmp/foo.txt"
# If file exists, delete it.
if os.path.isfile(myfile):
    os.remove(myfile)
else:
    # If it fails, inform the user.
    print("Error: %s file not found" % myfile)

예외 처리

#!/usr/bin/python
import os

# Get input.
myfile = raw_input("Enter file name to delete: ")

# Try to delete the file.
try:
    os.remove(myfile)
except OSError as e:
    # If it fails, inform the user.
    print("Error: %s - %s." % (e.filename, e.strerror))

각 출력

삭제할 파일 이름을 입력하십시오: 데모.txt오류: 데모.txt - 해당 파일 또는 디렉터리가 없습니다.

삭제할 파일 이름 입력: rr.txt오류: rr.txt - 작업이 허용되지 않습니다.

삭제할 파일 이름 입력: foo.txt

폴더 삭제를 위한 Python 구문

shutil.rmtree()

예:shutil.rmtree()

#!/usr/bin/python
import os
import sys
import shutil

# Get directory name
mydir = raw_input("Enter directory name: ")

# Try to remove the tree; if it fails, throw an error using try...except.
try:
    shutil.rmtree(mydir)
except OSError as e:
    print("Error: %s - %s." % (e.filename, e.strerror))

사용하다

shutil.rmtree(path[, ignore_errors[, onerror]])

(shutil에 대한 전체 설명서 참조) 및/또는

os.remove

그리고.

os.rmdir

(OS에 대한 전체 설명서)

다음은 두 가지 기능을 모두 사용하는 강력한 기능입니다.os.remove그리고.shutil.rmtree:

def remove(path):
    """ param <path> could either be relative or absolute. """
    if os.path.isfile(path) or os.path.islink(path):
        os.remove(path)  # remove the file
    elif os.path.isdir(path):
        shutil.rmtree(path)  # remove dir and all contains
    else:
        raise ValueError("file {} is not a file or dir.".format(path))

기본 제공 모듈을 사용할 수 있습니다(Python 3.4+ 필요하지만 PyPI: , )의 이전 버전에 대한 백포트가 있습니다.

파일을 제거하는 방법은 다음과 같습니다.

import pathlib
path = pathlib.Path(name_of_file)
path.unlink()

또는 빈 폴더를 제거하는 방법:

import pathlib
path = pathlib.Path(name_of_folder)
path.rmdir()

Python에서 파일 또는 폴더 삭제

Python에서 파일을 삭제하는 방법은 여러 가지가 있지만 가장 좋은 방법은 다음과 같습니다.

  1. os.remove()는 파일을 제거합니다.
  2. os.unlink()가 파일을 제거합니다.제거() 메서드의 유닉스 이름입니다.
  3. shutil.rmtree()는 디렉토리와 디렉토리의 모든 내용을 삭제합니다.
  4. 통속적인Path.unlink()가 단일 파일을 삭제합니다. Pathlib 모듈은 Python 3.4 이상에서 사용할 수 있습니다.

os.제거 »

예 1: os.remove() 메서드를 사용하여 파일을 제거하는 기본 예제.

import os
os.remove("test_file.txt")
print("File removed successfully")

예 2: os.path.is 파일을 사용하여 파일 존재 여부 확인 및 os.remove를 사용하여 파일 삭제

import os
#checking if file exist or not
if(os.path.isfile("test.txt")):
    #os.remove() function to remove the file
    os.remove("test.txt")
    #Printing the confirmation message of deletion
    print("File Deleted successfully")
else:
print("File does not exist")
#Showing the message instead of throwig an error

예 3: 특정 확장자를 가진 모든 파일을 삭제하는 Python 프로그램

import os 
from os import listdir
my_path = 'C:\\Python Pool\\Test'
for file_name in listdir(my_path):
    if file_name.endswith('.txt'):
        os.remove(my_path + file_name)

예 4: 폴더 내의 모든 파일을 삭제하는 Python 프로그램

특정 디렉터리에 있는 모든 파일을 삭제하려면 * 기호를 패턴 문자열로 사용하면 됩니다.#os 및 glob 모듈 가져오기, glob #Loop Through the folder project 모든 파일을 glob.glob("pythonpool/*")에 있는 파일에 대해 하나씩 삭제합니다. os.remove(파일) print("삭제됨" + str(파일)

os.unlink »

os.unlink()는 os.remove()의 별칭 또는 다른 이름입니다. Unix OS에서 remove는 unlink라고도 합니다.참고: 모든 기능과 구문은 os.unlink() 및 os.remove()와 동일합니다.둘 다 Python 파일 경로를 삭제하는 데 사용됩니다.둘 다 삭제 기능을 수행하는 Python의 표준 라이브러리에 있는 os 모듈의 메서드입니다.

shutil.rmtree ()

예 1: shutil.rmtree()를 사용하여 파일을 삭제하는 Python 프로그램

import shutil 
import os 
# location 
location = "E:/Projects/PythonPool/"
# directory 
dir = "Test"
# path 
path = os.path.join(location, dir) 
# removing directory 
shutil.rmtree(path) 

예 2: shutil.rmtree()를 사용하여 파일을 삭제하는 Python 프로그램

import shutil 
import os 
location = "E:/Projects/PythonPool/"
dir = "Test"    
path = os.path.join(location, dir) 
shutil.rmtree(path) 

통속적인빈 디렉토리를 제거할 경로.rmdir()

Pathlib 모듈은 파일과 상호 작용하는 다양한 방법을 제공합니다.Rmdir는 빈 폴더를 삭제할 수 있는 경로 함수 중 하나입니다.먼저 디렉터리에 대한 Path()를 선택한 다음 rmdir() 메서드를 호출하면 폴더 크기가 확인됩니다.비어 있으면 삭제됩니다.

이렇게 하면 실제 데이터가 손실될 염려 없이 빈 폴더를 삭제할 수 있습니다.

from pathlib import Path
q = Path('foldername')
q.rmdir()

파이썬에서 파일이나 폴더를 삭제하려면 어떻게 해야 합니까?

Python 3의 경우 파일과 디렉터리를 개별적으로 제거하려면 및 Path각각의 객체 메서드:

from pathlib import Path
dir_path = Path.home() / 'directory' 
file_path = dir_path / 'file'

file_path.unlink() # remove file

dir_path.rmdir()   # remove directory

는 " 과같상사수있도습다니용할를로경대다"와 함께 사용할 수도 .Path은 당신의 할 수 .Path.cwd.

Python 2에서 개별 파일 및 디렉터리를 제거하려면 아래 레이블이 지정된 섹션을 참조하십시오.

내용이 포함된 디렉터리를 제거하려면 를 사용하고 Python 2 및 3에서 사용할 수 있습니다.

from shutil import rmtree

rmtree(dir_path)

시연

3은 Python 3.4입니다.Path물건.

하나를 사용하여 디렉터리와 파일을 만들어 사용법을 시연해 보겠습니다.참고로 우리는 다음을 사용합니다./에서 백슬래시를 합니다.\\아니면 생줄을 사용하는 것처럼.r"foo\bar"):

from pathlib import Path

# .home() is new in 3.5, otherwise use os.path.expanduser('~')
directory_path = Path.home() / 'directory'
directory_path.mkdir()

file_path = directory_path / 'file'
file_path.touch()

그리고 이제:

>>> file_path.is_file()
True

이제 삭제하겠습니다.먼저 파일:

>>> file_path.unlink()     # remove file
>>> file_path.is_file()
False
>>> file_path.exists()
False

글로빙을 사용하여 여러 파일을 제거할 수 있습니다. 먼저 다음을 위한 몇 가지 파일을 만들어 보겠습니다.

>>> (directory_path / 'foo.my').touch()
>>> (directory_path / 'bar.my').touch()

그런 다음 글로벌 패턴을 반복합니다.

>>> for each_file_path in directory_path.glob('*.my'):
...     print(f'removing {each_file_path}')
...     each_file_path.unlink()
... 
removing ~/directory/foo.my
removing ~/directory/bar.my

이제 디렉터리 제거를 시연합니다.

>>> directory_path.rmdir() # remove directory
>>> directory_path.is_dir()
False
>>> directory_path.exists()
False

디렉터리와 디렉터리에 있는 모든 항목을 제거하려면 어떻게 해야 합니까?에서는 이사용사경우의례,를 합니다.shutil.rmtree

디렉터리 및 파일을 다시 만듭니다.

file_path.parent.mkdir()
file_path.touch()

로 로고참.rmdir비어 있지 않으면 실패하기 때문에 rmtree가 편리합니다.

>>> directory_path.rmdir()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/anaconda3/lib/python3.6/pathlib.py", line 1270, in rmdir
    self._accessor.rmdir(self)
  File "~/anaconda3/lib/python3.6/pathlib.py", line 387, in wrapped
    return strfunc(str(pathobj), *args)
OSError: [Errno 39] Directory not empty: '/home/username/directory'

이제 tree를 가져오고 디렉터리를 함수로 전달합니다.

from shutil import rmtree
rmtree(directory_path)      # remove everything 

그리고 우리는 전체가 제거된 것을 볼 수 있습니다.

>>> directory_path.exists()
False

파이썬 2

Python 2에 있는 경우 pathlib2라는 pathlib 모듈의 백포트가 있으며, pip로 설치할 수 있습니다.

$ pip install pathlib2

그런 다음 라이브러리의 별칭을 다음과 같이 지정할 수 있습니다.pathlib

import pathlib2 as pathlib

또는 직접 가져오기만 하면 됩니다.Path개체(여기에 설명된 대로):

from pathlib2 import Path

너무 많은 경우 파일을 제거할 수 있습니다.

from os import unlink, remove
from os.path import join, expanduser

remove(join(expanduser('~'), 'directory/file'))

또는

unlink(join(expanduser('~'), 'directory/file'))

다음을 사용하여 디렉터리를 제거할 수 있습니다.

from os import rmdir

rmdir(join(expanduser('~'), 'directory'))

또한 빈 디렉토리를 재귀적으로 제거할 뿐이지만 사용자의 사용 사례에 적합할 수 있습니다.

이것은 제가 dirs를 삭제하는 기능입니다."경로"에는 전체 경로 이름이 필요합니다.

import os

def rm_dir(path):
    cwd = os.getcwd()
    if not os.path.exists(os.path.join(cwd, path)):
        return False
    os.chdir(os.path.join(cwd, path))

    for file in os.listdir():
        print("file = " + file)
        os.remove(file)
    print(cwd)
    os.chdir(cwd)
    os.rmdir(os.path.join(cwd, path))

shutil.rmtree는 비동기 함수이므로 완료 시간을 확인하려면 다음과 같이 사용할 수 있습니다.고리

import os
import shutil

shutil.rmtree(path)

while os.path.exists(path):
  pass

print('done')
import os

folder = '/Path/to/yourDir/'
fileList = os.listdir(folder)

for f in fileList:
    filePath = folder + '/'+f

    if os.path.isfile(filePath):
        os.remove(filePath)

    elif os.path.isdir(filePath):
        newFileList = os.listdir(filePath)
        for f1 in newFileList:
            insideFilePath = filePath + '/' + f1

            if os.path.isfile(insideFilePath):
                os.remove(insideFilePath)

파일 삭제:

os.unlink(path, *, dir_fd=None)

또는

os.remove(path, *, dir_fd=None)

두 기능은 의미론적으로 동일합니다.이 함수는 파일 경로를 제거(삭제)합니다.경로가 파일이 아니고 디렉터리인 경우 예외가 발생합니다.

폴더 삭제:

shutil.rmtree(path, ignore_errors=False, onerror=None)

또는

os.rmdir(path, *, dir_fd=None)

디렉터리 , 전체디리제면려거하트리를터렉,,shutil.rmtree()사용할 수 있습니다. os.rmdir디렉토리가 비어 있고 존재하는 경우에만 작동합니다.

상위 폴더를 재귀적으로 삭제하는 경우:

os.removedirs(name)

일부 콘텐츠가 있는 상위 디렉터리까지 비어 있는 모든 상위 디렉터리를 제거합니다.

ex.os.sysrs("/xyz/pqr")는 디렉터리가 비어 있으면 'xy/xyz/pqr', 'xy/xyz' 및 'xyz' 순으로 디렉터리를 제거합니다.

자세한 내용은 공식 문서를 확인하십시오. , , , ,

폴더의 모든 파일을 제거하려면 다음과 같이 하십시오.

import os
import glob

files = glob.glob(os.path.join('path/to/folder/*'))
files = glob.glob(os.path.join('path/to/folder/*.csv')) // It will give all csv files in folder
for file in files:
    os.remove(file)

디렉토리의 모든 폴더를 제거하려면

from shutil import rmtree
import os

// os.path.join()  # current working directory.

for dirct in os.listdir(os.path.join('path/to/folder')):
    rmtree(os.path.join('path/to/folder',dirct))

Eric Araujo의 의견으로 강조된 TOCTOU 문제를 피하기 위해 올바른 메서드를 호출하는 예외를 포착할 수 있습니다.

def remove_file_or_dir(path: str) -> None:
    """ Remove a file or directory """
    try:
        shutil.rmtree(path)
    except NotADirectoryError:
        os.remove(path)

부터shutil.rmtree()디렉토리만 제거합니다.os.remove()또는os.unlink()파일만 제거합니다.

저의 개인적인 선호는 pathlib 객체로 작업하는 것입니다. 특히 크로스 플랫폼 코드를 개발하는 경우 파일 시스템과 상호 작용하는 데 더 파이썬적이고 오류가 발생하기 쉬운 방법을 제공합니다.

이 경우 pathlib3x를 사용할 수 있습니다. Pathlib3x는 Python 3.6 이상용 최신 Python pathlib의 백포트와 "copy", "copy2", "copytree", "rmtree" 등의 몇 가지 추가 기능을 제공합니다.

포장도 됩니다.shutil.rmtree:

$> python -m pip install pathlib3x
$> python
>>> import pathlib3x as pathlib

# delete a directory tree
>>> my_dir_to_delete=pathlib.Path('c:/temp/some_dir')
>>> my_dir_to_delete.rmtree(ignore_errors=True)

# delete a file
>>> my_file_to_delete=pathlib.Path('c:/temp/some_file.txt')
>>> my_file_to_delete.unlink(missing_ok=True)

당신은 그것을 github 또는 PyPi에서 찾을 수 있습니다.


고지 사항:저는 pathlib3x 라이브러리의 저자입니다.

를 사용하는 것이 좋습니다.subprocess아름답고 읽을 수 있는 코드를 쓰는 것이 당신의 취향이라면:

import subprocess
subprocess.Popen("rm -r my_dir", shell=True)

소프트웨어 엔지니어가 아니라면 Jupyter를 사용하는 것을 고려해 볼 수 있습니다. bash 명령을 입력하면 됩니다.

!rm -r my_dir

전통적으로 다음과 같이 사용합니다.shutil:

import shutil
shutil.rmtree(my_dir) 

언급URL : https://stackoverflow.com/questions/6996603/how-can-i-delete-a-file-or-folder-in-python

반응형