Python删除空文件和空文件夹的方法


Posted in Python onJuly 14, 2015

本文实例讲述了Python删除空文件和空文件夹的方法。分享给大家供大家参考。具体实现方法如下:

#-*- coding:cp936 -*-
"""
os.walk()
函数声明:walk(top,topdown=True,onerror=None)
1>参数top表示需要遍历的目录树的路径
2>参数topdown的默认值是"True",表示首先返回目录树下的文件,然后在遍历目录树的子目录.Topdown的值为"False"时,
则表示先遍历目录树的子目录,返回子目录下的文件,最后返回根目录下的文件
3>参数onerror的默认值是"None",表示忽略文件遍历时产生的错误.如果不为空,则提供一个自定义函数提示错误信息后继续
遍历或抛出异常中止遍历
4>该函数返回一个元组,该元组有3个元素,这3个元素分别表示每次遍历的路径名,目录列表和文件列表
在2.5版中新增加了一个叫partition的函数,它可以做什么呢?举一个小例子:
>>> 'http://www.donews.net/limodou'.partition('://')
('http', '://', 'www.donews.net/limodou')
>>> 'file:/a.html'.partition('://')
('file:/a.html', ", ")
从第一个例子可以看出,它用来根据指定的分隔符将字符串进行分割,如果字符串包含指定的分隔符,则返回一个3元的tuple,
第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。第二个例子说明,如果找不到指定的分隔符,
则返回仍然是一个3元的tuple,第一个为整个字符串,第二和第三个为空串
"""
import os, sys
def remove_empty_dir(path):
 print path
 while(path[-1] == "\\"):
 path = path[:-1]
 print path
 a = {}
 for root, dirs, files in os.walk(path, False):
 if len(files) == 0:
  a[root] = 0
 else:
  for file in files: #对文件列表进行扫描
   try:
   fn = os.path.join(root, file) #将路径名和文件名拼接起来
   size = os.path.getsize(fn) #获取文件名大小
   if size != 0:
   b = root
   while(b != path):
    a[b] = 1
    b = b.rpartition("\\")[0] #保存上一级目录名
   a[path] = 1
   else: 
   try:
    os.remove(fn) #删除文件名为空的文件
    a[root] = 0
   except (WindowsError):
    b = root
    while(b != path):
    a[b] = 1
    b = b.rpartition("\\")[0]
    a[path] = 1
   except WindowsError:
   b = root
   while(b != path):
    a[b] = 1
    b = b.rpartition("\\")[0]
   a[path] = 1
   if a[root]:
   break;
 empty_dirs = []
 for i, j in a.iteritems():
 if j == 0:
  print i
  empty_dirs.insert(0, i)
 del a
 empty_dirs.sort(reverse=True) 
 for i in empty_dirs:
 try:
  os.rmdir(i)  #删除目录
  print "%s 删掉了!!" % (i)
 except (WindowsError):
  print "%s 删不掉!!" % (i)
if __name__ == "__main__":
 remove_empty_dir('f:\\b')

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python学习之asyncore模块用法实例教程
Sep 29 Python
Python标准库内置函数complex介绍
Nov 25 Python
解读Django框架中的低层次缓存API
Jul 24 Python
TensorFlow实现Batch Normalization
Mar 08 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
python 获取毫秒数,计算调用时长的方法
Feb 20 Python
总结python中pass的作用
Feb 27 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
Aug 04 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
python 获取计算机的网卡信息
Feb 18 Python
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 #Python
Python删除windows垃圾文件的方法
Jul 14 #Python
Python简单计算文件夹大小的方法
Jul 14 #Python
Python判断直线和矩形是否相交的方法
Jul 14 #Python
Python下Fabric的简单部署方法
Jul 14 #Python
python简单获取数组元素个数的方法
Jul 13 #Python
python连接字符串的方法小结
Jul 13 #Python
You might like
屏蔽浏览器缓存另类方法
2006/10/09 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
学习php过程中的一些注意点的总结
2013/10/25 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
php基于数组函数实现关联表的编辑操作示例
2017/07/04 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
Python 正则表达式入门(初级篇)
2016/12/07 Python
Python绘制七段数码管实例代码
2017/12/20 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
简历中自我评价分享
2013/10/09 职场文书
研究生自我鉴定范文
2013/10/30 职场文书
土地转让协议书
2014/04/15 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
工作失职检讨书
2015/01/26 职场文书
欢迎词范文
2015/01/27 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
Linux安装apache服务器的配置过程
2021/11/27 Servers
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL