📜  使用Python删除目录或文件

📅  最后修改于: 2022-05-13 01:54:53.061000             🧑  作者: Mango

使用Python删除目录或文件

Python提供了不同的方法和函数来删除文件和目录。可以根据需要删除文件。 Python提供的各种方法是——

  • 使用 os.remove()
  • 使用 os.rmdir()
  • 使用 shutil.rmtree()

使用 os.remove()

Python中的OS 模块提供了与操作系统交互的功能。 os 模块中的所有函数在文件名和路径无效或不可访问的情况下,或具有正确类型但操作系统不接受的其他参数的情况下引发OSError

Python中的os.remove()方法用于删除或删除文件路径。此方法不能删除或删除目录。如果指定的路径是目录,则该方法将引发OSError

示例 1:假设文件夹中包含的文件为:
python-os.remove

我们想从上面的文件夹中删除 file1。下面是实现。

# Python program to explain os.remove() method  
      
# importing os module  
import os 
    
# File name 
file = 'file1.txt'
    
# File location 
location = "D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil/"
    
# Path 
path = os.path.join(location, file) 
    
# Remove the file 
# 'file.txt' 
os.remove(path) 

输出:
python-os.remove

示例2:如果指定的路径是目录。

# Python program to explain os.remove() method  
      
# importing os module  
import os 
    
# Directory name
dir = "Nikhil"
  
# Path 
location = "D:/Pycharm projects/GeeksforGeeks/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/GeeksforGeeks/Authors/Nikhil'

示例 3:使用os.remove()方法时处理错误。

# Python program to explain os.remove() method  
      
# importing os module  
import os 
    
# path 
path = 'D:/Pycharm projects/GeeksforGeeks/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/GeeksforGeeks/Authors/Nikhil'
File path can not be removed

注意:要了解有关os.remove()的更多信息,请单击此处。

使用 os.rmdir()

Python中的os.rmdir()方法用于移除或删除一个空目录。如果指定的路径不是空目录,将引发OSError

示例 1:假设目录是 -

python-os.rmdir

我们要删除目录 Geeks。下面是实现。

# Python program to explain os.rmdir() method  
      
# 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) 

输出:

python-os.rmdir

示例 2: using os.rmdir()方法处理错误,

# Python program to explain os.rmdir() method
  
# importing os module  
import os
  
# Directory name 
directory = "GeeksforGeeks"
  
# Parent Directory 
parent = "D:/Pycharm projects/"
  
# Path 
path = os.path.join(parent, directory)
  
# Remove the Directory
# "GeeksforGeeks"
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/GeeksforGeeks'
Directory 'GeeksforGeeks' can not be removed

注意:要了解有关os.rmdir()的更多信息,请单击此处。

使用 shutil.rmtree()

shutil.rmtree() 用于删除整个目录树,路径必须指向目录(但不能指向目录的符号链接)。

示例 1:假设目录和子目录如下。

# 父目录:
python-shutil.rmtree

# 父目录内的目录:
python-shutil.rmtree

# 子目录下的文件:
python-shutil.rmtree

我们要删除目录作者。下面是实现。

# Python program to demonstrate
# shutil.rmtree()
  
import shutil
import os
  
# location
location = "D:/Pycharm projects/GeeksforGeeks/"
  
# directory
dir = "Authors"
  
# path
path = os.path.join(location, dir)
  
# removing directory
shutil.rmtree(path)

输出:

python-shutil.rmtree

示例 2:通过传递ignore_errors = True

# Python program to demonstrate
# shutil.rmtree()
  
import shutil
import os
  
# location
location = "D:/Pycharm projects/GeeksforGeeks/"
  
# 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

输出:

示例 3:通过传递 onerror
onerror中,应该传递一个必须包含三个参数的函数。

  • 函数 –引发异常的函数。
  • path –传递的路径名,在删除时引发异常
  • excinfo – sys.exc_info() 引发的异常信息

下面是实现

# 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/GeeksforGeeks/"
  
# directory
dir = "Authors"
  
# path
path = os.path.join(location, dir)
  
# removing directory
shutil.rmtree(path, onerror = handler)

输出: