Python删除文件与清空目录的完整指南:os与shutil模块详解

远山来客
远山来客
发布时间:2026-10-14 | 3人浏览过
原创

本文详细介绍Python中删除文件和清空目录的多种实现方式。涵盖os.remove、os.unlink删除单个文件,os.rmdir删除空目录,以及os.removedirs递归删除目录的方法。针对非空文件夹清空,推荐使用shutil.rmtree结合重新创建目录的策略,并附带Windows与Unix系统的差异说明及代码示例。

使用 os.remove() 删除文件

Python os.remove() 方法

os.remove() 函数主要用于删除指定路径下的文件。需要注意的是,如果该路径指向的是一个目录而非文件,程序将抛出 OSError 异常。

该方法在 Unix 和 Windows 操作系统中均可正常使用。

以下代码示例展示了如何使用 remove() 方法删除文件:


#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目录
print "目录为: %s" %os.listdir(os.getcwd())

# 移除
os.remove("aa.txt")

# 移除后列出目录
print "移除后 : %s" %os.listdir(os.getcwd())

运行上述代码后,控制台输出结果如下:

目录列表为: [ 'a1.txt','aa.txt','resume.doc' ] 移除后 : [ 'a1.txt','resume.doc' ]

使用 os.removedirs() 递归删除目录

Python os.removedirs() 方法

os.removedirs() 用于递归地删除目录。其工作原理类似于 rmdir(),但会尝试从子文件夹成功删除后,逐级向上删除父文件夹,直到遇到一个非空目录或抛出错误(该错误通常被忽略,因为这意味着某个层级的文件夹不为空)。

以下实例演示了 removedirs() 方法的具体用法:


#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目录
print "目录为: %s" %os.listdir(os.getcwd())

# 移除
os.removedirs("/test")

# 列出移除后的目录
print "移除后目录为:" %os.listdir(os.getcwd())

执行上述程序后的输出结果为:

目录为: [ 'a1.txt','resume.doc','a3.py','test' ] 移除后目录为: [ 'a1.txt','resume.doc','a3.py' ]

使用 os.rmdir() 删除空目录

Python os.rmdir() 方法

os.rmdir() 用于删除指定路径的目录。该操作仅在当前文件夹为空时才能成功执行,否则将抛出 OSError 异常。

以下实例演示了 rmdir() 方法的使用场景:


#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目录
print "目录为: %s"%os.listdir(os.getcwd())

# 删除路径
os.rmdir("mydir")

# 列出重命名后的目录
print "目录为: %s" %os.listdir(os.getcwd()) 

运行以上程序,输出结果如下:

目录为: [ 'a1.txt','resume.doc','a3.py','mydir' ] 目录为: [ 'a1.txt','resume.doc','a3.py' ]

使用 os.unlink() 删除文件

Python os.unlink() 方法

os.unlink() 用于删除文件。如果尝试对目录使用此方法,程序将返回错误。

以下实例演示了 unlink() 方法的具体应用:


#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 列出目录
print "目录为: %s" %os.listdir(os.getcwd())

os.unlink("aa.txt")

# 删除后的目录
print "删除后的目录为 : %s" %os.listdir(os.getcwd()) 

执行以上程序,输出结果如下:

目录为: [ 'a1.txt','aa.txt','resume.doc'] 删除后的目录为 : [ 'a1.txt','resume.doc' ]

删除操作注意事项与递归删除实现

其他注意事项总结

1、remove() 与 unlink() 的功能完全一致,均可用于删除文件。

在 Windows 系统中,如果尝试删除一个正在被其他进程使用的文件,程序将抛出异常。而在 Unix 系统中,删除操作会移除目录表中的记录,但文件的实际存储数据可能仍保留在磁盘上,直到所有引用该文件的句柄关闭。


#使用os.unlink()和os.remove()来删除文件
#!/user/local/bin/python2.7
# -*- coding:utf-8 -*-
import os
my_file = 'D:/text.txt'
if os.path.exists(my_file):
 #删除文件,可使用以下两种方法。
 os.remove(my_file)
 #os.unlink(my_file)
else:
 print 'no such file:%s'%my_file 

2、实现递归删除目录和文件的方法(类似于 DOS 命令 DeleteTree):

相关代码如下:


import os
for root, dirs, files in os.walk(top, topdown=False):
 for name in files:
  os.remove(os.path.join(root, name))
 for name in dirs:
  os.rmdir(os.path.join(root, name)) 

清空指定文件夹及文件移动技巧

3、Python 清空指定文件夹下所有文件的方法:

这一需求很常见:在执行某些代码前,需要清空指定的文件夹。如果直接使用 os.remove(),可能会因为文件被占用而删除失败。一个简单的解决方案是先强制删除整个文件夹,然后重新创建一个同名的空文件夹。具体实现如下:


import shutil 
shutil.rmtree('要清空的文件夹名') 
os.mkdir('要清空的文件夹名') 

注:可参考这里对shutil模块的介绍:https://www.jb51.net/article/110329.htm

如果需要将文件从一个文件夹移动到另一个文件夹,并同时重命名,使用 shutil 模块也非常简单:


shutil.move('原文件夹/原文件名','目标文件夹/目标文件名')

删除非空文件夹的最佳实践

4、Python 删除非空文件夹

通常删除文件时使用 os 库,利用 os.remove(path) 即可完成。如果删除的是空文件夹,可以使用 os.removedirs(path)。然而,当需要删除整个非空文件夹时,os.removedirs(path) 会报错。此时,可以使用 Python 内置的 shutil 库,它是一个提供文件和文件夹高级操作的模块,可与 os 库互补完成整体复制、移动文件夹、重命名文件等操作。


import os
import shutil
os.remove(path) #删除文件
os.removedirs(path) #删除空文件夹
shutil.rmtree(path) #递归删除文件夹

参考文献:

1、https://blog.csdn.net/muwinter/article/details/77196261 2018.5.25 2、https://blog.csdn.net/qysh123/article/details/51923606 2018.5.25 3、http://www.runoob.com/python/os-unlink.html 2018.5.25 4、http://www.runoob.com/python/os-rmdir.html 2018.5.25 5、http://www.runoob.com/python/os-removedirs.html 2018.5.25 6、http://www.runoob.com/python/os-remove.html 2018.5.25

到此这篇关于python删除文件、清空目录的实现方法的文章就介绍到这了,更多相关python删除文件、清空目录内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表