有没有一个Python函数可以不加区别地删除文件和目录?

51 浏览
0 Comments

有没有一个Python函数可以不加区别地删除文件和目录?

我该如何删除文件或文件夹?

admin 更改状态以发布 2023年5月22日
0
0 Comments

Python删除文件的语法

import os
os.remove("/tmp/.txt")

或者

import os
os.unlink("/tmp/.txt")

或者

pathlib库,适用于Python版本>=3.4

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

Path.unlink(missing_ok=False)

Unlink方法用于删除文件或符号连接。

  • 如果missing_ok为false(默认值),则如果路径不存在,将引发FileNotFoundError。
  • 如果missing_ok为true,则会忽略FileNotFoundError异常(与POSIX rm -f命令的行为相同)。
  • 从版本3.8开始:添加了missing_ok参数。

最佳实践

首先,检查文件或文件夹是否存在,然后再删除。您可以通过以下两种方式实现此目标:

  1. os.path.isfile("/path/to/file")
  2. 使用异常处理

示例用于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))

相应的输出

输入要删除的文件名:demo.txt
错误:demo.txt - 没有这样的文件或目录。
输入要删除的文件名:rrr.txt
错误:rrr.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))

0
0 Comments

Python 3.4+pathlib 模块的 Path 对象还暴露了以下实例方法:

0