【问题标题】:How to test for an empty directory, no matter what its size, in Python?如何在 Python 中测试空目录,无论其大小如何?
【发布时间】:2014-08-06 23:34:01
【问题描述】:

假设我有一个目录 C:/Test,它要么是空的,要么包含超过 2000000 个文件,所有文件都具有相同的扩展名(例如 *.txt)。

如何使用Python判断目录是否为空没有文件枚举?

【问题讨论】:

  • 这是您正在寻找的答案:stackoverflow.com/questions/6215334/…
  • 这是一个有趣的方法(使用 rmdir);但是,我真的不想在目录为空时删除它。我只是想知道它是否为空——仅此而已。

标签: python-2.7


【解决方案1】:

我意识到这是一个相当古老的问题,但我发现这是因为我想做类似的事情,我发现os.scandirany() 结合使用很有用。 scandir() 将返回目录中条目的迭代器,而不是列表。 any() 可以评估迭代器是否为非空。

for _ in os.scandir(path):
 print('not empty')
 break

if any(os.scandir(path)):
   print('not empty')

【讨论】:

    【解决方案2】:

    这就是你要找的吗?

    import os
    if not os.listdir('C:/Test'):
        print "empty"
    

    编辑: 试运行

    for x in range(0, 3000000):
        open(str(x), 'a').close()
    
    print not os.listdir('.')
    

    输出:假

    【讨论】:

    • 我不相信这会处理包含大量文件的目录。
    • @user1435385 我不确定您所说的“大量文件”是什么意思。此代码将告诉您目录是否为空 - 据我所知,目录中的文件无关紧要。您的意思是“大量文件”吗?如果是这样,那么您可能是正确的,因为我没有尝试过。
    • @user1435385 啊。我回复快就是你的意思!
    • @user1435385 我刚刚创建了一个包含 3,000,000 个文件的目录,并且这段代码运行正常。
    • 这适用于我的目的@rocktheartsm41。但是,当 python 3.5 发布时,可能有一种更通用的方法来获取 Windows 中目录的信息(例如它们的大小):-)。
    猜你喜欢
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2012-09-10
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多