如何在Python中删除(删除)文件和目录
Python有一些内置模块,可让您删除文件和目录。
本教程说明了如何使用os
,pathlib
和shutil
模块中的功能删除文件和目录。
删除文件
在Python中,您可以使用os.remove()
,os.unlink()
,pathlib.Path.unlink()
删除单个文件。
os
模块提供了一种与操作系统交互的便携式方法。 该模块可用于Python 2和3。
要使用os.remove()
删除单个文件,请将文件路径作为参数传递:
import osfile_path = '/tmp/file.txt'
os.remove(file_path)
os.remove()
和os.unlink()
函数在语义上是相同的:
import osfile_path = '/tmp/file.txt'
os.unlink(file_path)
如果指定的文件不存在,则会引发FileNotFoundError
错误。 os.remove()
和os.unlink()
都只能删除文件,不能删除目录。 如果给定的路径指向目录,则将引发IsADirectoryError
错误。
删除文件需要对包含文件的目录具有写和执行权限。 否则,您会得到PermissionError
错误。
为避免在删除文件时出错,您可以使用异常处理来捕获异常并发送适当的错误消息:
import osfile_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 Pathfile_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 模块根据模式匹配多个文件。 例如,要删除/tmp
目录中的所有.txt
文件,可以使用以下命令:
import osimport glob
files = glob.glob('/tmp/*.txt')
for f in files:
try:
f.unlink()
except OSError as e:
print("Error: %s : %s" % (f, e.strerror))
要递归删除/tmp
目录中的所有.txt
文件及其下的所有子目录,请将recursive=True
参数传递给glob()
函数,并使用**模式:
import osimport 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()
递归地匹配目录和所有子目录中的所有文件。 以下示例代码删除/tmp
目录中的所有.txt
文件:
from pathlib import Pathfor 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 osdir_path = '/tmp/img'
try:
os.rmdir(dir_path)
except OSError as e:
print("Error: %s : %s" % (dir_path, e.strerror))
或者,您可以使用pathlib
模块删除目录:
from pathlib import Pathdir_path = Path('/tmp/img')
try:
dir_path.rmdir()
except OSError as e:
print("Error: %s : %s" % (dir_path, e.strerror))
shutil
模块可让您对文件和目录执行许多高级操作。
使用shutil.rmtree()
功能,您可以删除包含其内容的给定目录:
import shutildir_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()
递归删除目录以及 所有的内容。
删除文件或目录时要格外小心,因为一旦删除文件,就无法轻易恢复它。
如果您有任何问题或反馈,请随时发表评论。
以上是 如何在Python中删除(删除)文件和目录 的全部内容, 来源链接: utcz.com/z/507690.html