在Python中查找空目录

所有,

在删除之前查看目录中是否有数据的最佳方法是什么? 我正在浏览一些页面,使用wget来查找一些图片,当然每个页面上都没有图像,但是目录仍然被创build。

dir = 'Files\\%s' % (directory) os.mkdir(dir) cmd = 'wget -r -l1 -nd -np -A.jpg,.png,.gif -P %s %s' %(dir, i[1]) os.system(cmd) if not os.path.isdir(dir): os.rmdir(dir) 

我想testing一下文件是否在创build后被删除了。 如果什么都没有…删除它。

谢谢,亚当

 import os if not os.listdir(dir): os.rmdir(dir) 

LBYL风格。
对于EAFP ,请参阅mouad的答案。

我会像EAFP一样去:

 try: os.rmdir(dir) except OSError as ex: if ex.errno == errno.ENOTEMPTY: print "directory not empty" 

注意: os.rmdir不要删除非空的目录。

尝试:

 if not os.listdir(dir): print "Empty" 

要么

 if os.listdir(dir) == []: print "Empty" 

如果您确实检查了目录是否存在,以及目录中是否有内容,如果是这样:

 if os.path.isdir(dir) and len(os.listdir(dir)) == 0: os.rmdir(dir) 

如果已经创build了空目录,则可以将此脚本放在外部目录中并运行它:

 import os def _visit(arg, dirname, names): if not names: print 'Remove %s' % dirname os.rmdir(dirname) def run(outer_dir): os.path.walk(outer_dir, _visit, 0) if __name__ == '__main__': outer_dir = os.path.dirname(__file__) run(outer_dir) os.system('pause') 

现在可以在Python3中更高效地完成这个工作,因为不需要build立一个目录内容列表来查看它是否为空:

 import os def is_dir_empty(path): return next(os.scandir(path), None) is None 
 import os import tempfile root = tempfile.gettempdir() EMPTYDIRS = [] for path, subdirs, files in os.walk(r'' + root ): if len( files ) == 0 and len( subdirs ) == 0: EMPTYDIRS.append( path ) for e in EMPTYDIRS: print e