首页 > 编程 > Python > 正文

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

2020-01-04 18:04:41
字体:
来源:转载
供稿:网友

这篇文章主要介绍了Python删除空文件和空文件夹的方法,涉及Python针对文件与文件夹的遍历、判断与删除等技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

 

 
  1. #-*- coding:cp936 -*- 
  2. ""
  3. os.walk() 
  4. 函数声明:walk(top,topdown=True,onerror=None) 
  5. 1>参数top表示需要遍历的目录树的路径 
  6. 2>参数topdown的默认值是"True",表示首先返回目录树下的文件,然后在遍历目录树的子目录.Topdown的值为"False"时, 
  7. 则表示先遍历目录树的子目录,返回子目录下的文件,最后返回根目录下的文件 
  8. 3>参数onerror的默认值是"None",表示忽略文件遍历时产生的错误.如果不为空,则提供一个自定义函数提示错误信息后继续 
  9. 遍历或抛出异常中止遍历 
  10. 4>该函数返回一个元组,该元组有3个元素,这3个元素分别表示每次遍历的路径名,目录列表和文件列表 
  11. 在2.5版中新增加了一个叫partition的函数,它可以做什么呢?举一个小例子: 
  12. >>> 'http://www.donews.net/limodou'.partition('://'
  13. ('http''://''www.donews.net/limodou'
  14. >>> 'file:/a.html'.partition('://'
  15. ('file:/a.html'", "
  16. 从第一个例子可以看出,它用来根据指定的分隔符将字符串进行分割,如果字符串包含指定的分隔符,则返回一个3元的tuple, 
  17. 第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。第二个例子说明,如果找不到指定的分隔符, 
  18. 则返回仍然是一个3元的tuple,第一个为整个字符串,第二和第三个为空串 
  19. ""
  20. import os, sys 
  21. def remove_empty_dir(path): 
  22. print path 
  23. while(path[-1] == "//"): 
  24. path = path[:-1] 
  25. print path 
  26. a = {} 
  27. for root, dirs, files in os.walk(path, False): 
  28. if len(files) == 0: 
  29. a[root] = 0 
  30. else
  31. for file in files: #对文件列表进行扫描 
  32. try
  33. fn = os.path.join(root, file) #将路径名和文件名拼接起来 
  34. size = os.path.getsize(fn) #获取文件名大小 
  35. if size != 0: 
  36. b = root 
  37. while(b != path): 
  38. a[b] = 1 
  39. b = b.rpartition("//")[0] #保存上一级目录名 
  40. a[path] = 1 
  41. else:  
  42. try
  43. os.remove(fn) #删除文件名为空的文件 
  44. a[root] = 0 
  45. except (WindowsError): 
  46. b = root 
  47. while(b != path): 
  48. a[b] = 1 
  49. b = b.rpartition("//")[0] 
  50. a[path] = 1 
  51. except WindowsError: 
  52. b = root 
  53. while(b != path): 
  54. a[b] = 1 
  55. b = b.rpartition("//")[0] 
  56. a[path] = 1 
  57. if a[root]: 
  58. break
  59. empty_dirs = [] 
  60. for i, j in a.iteritems(): 
  61. if j == 0: 
  62. print i 
  63. empty_dirs.insert(0, i) 
  64. del a 
  65. empty_dirs.sort(reverse=True)  
  66. for i in empty_dirs: 
  67. try
  68. os.rmdir(i) #删除目录 
  69. print "%s 删掉了!!" % (i) 
  70. except (WindowsError): 
  71. print "%s 删不掉!!" % (i) 
  72. if __name__ == "__main__"
  73. remove_empty_dir('f://b'

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表