如何在Python中删除(删除)文件和目录
Python有一些内置模块,可让您删除文件和目录。
本教程说明了如何使用菜单中的功能删除文件和目录。 os
, pathlib
和 shutil
模块。
删除文件
在Python中,您可以使用 os.remove()
, os.unlink()
, pathlib.Path.unlink()
删除单个文件。
的 os
模块提供了与操作系统交互的便携式方法。 该模块可用于Python 2和3。
使用以下命令删除单个文件 os.remove()
,将路径作为参数传递给文件:
import os
file_path = '/tmp/file.txt'
os.remove(file_path)
os.remove()
和 os.unlink()
函数在语义上是相同的:
import os
file_path = '/tmp/file.txt'
os.unlink(file_path)
如果指定的文件不存在 FileNotFoundError
引发错误。 都 os.remove()
和 os.unlink()
只能删除文件,不能删除目录。 如果给定路径指向目录,则它们将拖曳 IsADirectoryError
错误。
删除文件需要在包含文件的目录上具有写和执行权限。 否则,你会得到 PermissionError
错误。
为了避免在删除文件时出错,可以使用异常处理来捕获异常并发送适当的错误消息:
import os
file_path = '/tmp/file.txt'
try:
os.remove(file_path)
except OSError as e:
print("Error: %s : %s" % (file_path, e.strerror))
的 pathlib
Python 3.4及更高版本中提供了该模块。 如果要在Python 2中使用此模块,可以使用pip进行安装。 pathlib
提供了一个面向对象的界面,用于处理不同操作系统的文件系统路径。
要使用pathlib
模块,创建一个 Path
指向文件的对象并调用 unlink()
对象的方法:
from pathlib import Path
file_path = Path('/tmp/file.txt')
try:
file_path.unlink()
except OSError as e:
print("Error: %s : %s" % (file_path, e.strerror))
pathlib.Path.unlink()
, os.remove()
和 os.unlink()
也可以用于删除符号链接。
模式匹配 #
您可以使用glob模块根据模式匹配多个文件。 例如,删除所有 .txt
中的文件 /tmp
目录中,您将使用以下内容:
import os
import glob
files = glob.glob('/tmp/*.txt')
for f in files:
try:
f.unlink()
except OSError as e:
print("Error: %s : %s" % (f, e.strerror))
递归删除所有文件 .txt
在里面 /tmp
目录及其下的所有子目录,通过 recursive=True
争论 glob()
功能并使用**模式:
import os
import glob
files = glob.glob('/tmp/**/*.txt', recursive=True)
for f in files:
try:
os.remove(f)
except OSError as e:
print("Error: %s : %s" % (f, e.strerror))
的 pathlib
该模块包含两个glob函数, glob()
和 rglob()
匹配给定目录中的文件。 glob()
仅匹配顶级目录中的文件。 rglob()
递归匹配目录和所有子目录中的所有文件。 以下示例代码将全部删除 .txt
中的文件 /tmp
目录:
from pathlib import Path
for f in Path('/tmp').glob('*.txt'):
try:
f.unlink()
except OSError as e:
print("Error: %s : %s" % (f, e.strerror))
删除目录(文件夹)#
在Python中,您可以使用 os.rmdir()
和 pathlib.Path.rmdir()
删除一个空目录并 shutil.rmtree()
删除非空目录。
以下示例显示如何删除空目录:
import os
dir_path = '/tmp/img'
try:
os.rmdir(dir_path)
except OSError as e:
print("Error: %s : %s" % (dir_path, e.strerror))
或者,您可以使用 pathlib
模块:
from pathlib import Path
dir_path = Path('/tmp/img')
try:
dir_path.rmdir()
except OSError as e:
print("Error: %s : %s" % (dir_path, e.strerror))
的 shutil
模块允许您对文件和目录执行许多高级操作。
随着 shutil.rmtree()
功能,您可以删除给定目录,包括其内容:
import shutil
dir_path = '/tmp/img'
try:
shutil.rmtree(dir_path)
except OSError as e:
print("Error: %s : %s" % (dir_path, e.strerror))
论点传递给 shutil.rmtree()
不能是目录的符号链接。
结论#
Python提供了几个用于处理文件的模块。
我们已经向您展示了如何使用 os.remove()
, os.unlink()
, pathlib.Path.unlink()
删除单个文件, os.rmdir()
和 pathlib.Path.rmdir()
删除一个空目录并 shutil.rmtree()
递归删除目录及其所有内容。
删除文件或目录时要格外小心,因为一旦删除文件,就无法轻松恢复它。
如果您有任何疑问或反馈,请随时发表评论。
蟒蛇