在Python中查找空目录

aeu*_*ere 40 python rmdir

所有,

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

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)
Run Code Online (Sandbox Code Playgroud)

我想测试一下文件在创建后是否被删除.如果没有,请删除它.

谢谢,亚当

Cor*_*erg 57

import os

if not os.listdir(dir):
    os.rmdir(dir)
Run Code Online (Sandbox Code Playgroud)

LBYL风格.
对于EAFP,请参阅mouad的回答.

  • 如果目录包含数千个文件,“os.listdir(dir)”返回大小会成为问题吗?@科里·戈德堡 (2认同)

mou*_*uad 46

我将像EAFP一样去:

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

os.rmdir不会删除非空的目录.

  • +1:简单.直接.它将**所有**的棘手决策委托给它所属的操作系统. (2认同)
  • 怎么样'else:raise`? (2认同)
  • 不错但是:`NameError:名称'errno'未定义`你需要`import errno`! (2认同)

dog*_*ane 18

尝试:

if not os.listdir(dir): 
    print "Empty"
Run Code Online (Sandbox Code Playgroud)

要么

if os.listdir(dir) == []:
    print "Empty"
Run Code Online (Sandbox Code Playgroud)


ide*_*n42 6

现在可以在Python3.5 +中更有效地完成此操作,因为无需查看目录内容列表就可以查看目录是否为空:

import os

def is_dir_empty(path):
    return next(os.scandir(path), None) is None
Run Code Online (Sandbox Code Playgroud)