有没有一个Python函数可以不加区别地删除文件和目录?
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参数。
最佳实践
首先,检查文件或文件夹是否存在,然后再删除。您可以通过以下两种方式实现此目标:
os.path.isfile("/path/to/file")
- 使用
异常处理
。
示例用于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))
-
os.remove()
移除一个文件。 -
os.rmdir()
移除一个空目录。 -
shutil.rmtree()
删除一个目录及其所有内容。
Python 3.4+
的 pathlib
模块的 Path
对象还暴露了以下实例方法:
-
pathlib.Path.unlink()
移除一个文件或符号链接。 -
pathlib.Path.rmdir()
移除一个空目录。