在Python中查找空目录
什么是在删除目录之前查看目录中是否有数据的最佳方法?我正在浏览几个页面,使用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)
我想测试一下文件是否在创建后删除目录。如果什么都没有......删除它。
感谢, 亚当
尝试:
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)
我将与EAFP去像这样:
try:
os.rmdir(dir)
except OSError as ex:
if ex.errno == errno.ENOTEMPTY:
print "directory not empty"
注意:os.rmdir不要删除非空的目录。
+1:简单。直接。它将全部**的棘手决策委托给它所属的操作系统。 – 2011-06-02 13:56:54
请注意,此函数会静默地删除您可能想要报告的所有其他错误(例如'EACCESS')。请注意,天真地解决这个问题可能会导致为非空目录报告错误,您可能会忽略它。不像看起来那么简单:-) – 2014-01-08 16:51:16
'else:raise'呢? – spectras 2015-09-07 17:05:41
如果已经创建的空目录,你可以把这个脚本在你的外部目录并运行它:
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')
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
这现在可以在Python3更有效地完成,因为没有必要建立一个目录内容清单,看看它是否为空:
import os
def is_dir_empty(path):
return next(os.scandir(path), None) is None
定义“空”。如果有子目录呢?他们应该检查数据吗?如果他们没有数据,他们是否也应该被删除? – kwatford 2011-06-02 13:57:33
在这种情况下,我没有任何子目录只是一个文件夹,它可能有或没有照片。 – aeupinhere 2011-06-02 14:04:42
请不要使用os.system来调用wget。使用子流程.Popen – 2011-06-02 14:43:08