在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