如何使用Python检查文件夹是否为空?

时间:2018-03-14 17:19:19

标签: python python-2.7

我正在尝试检查文件夹是否为空并执行以下操作:

import os
downloadsFolder = '../../Downloads/'
if not os.listdir(downloadsFolder):
    print "empty"
else:
    print "not empty"

不幸的是,我总是得到"不是空的"无论我在该文件夹中是否有任何文件。是因为可能存在一些隐藏的系统文件?有没有办法修改上面的代码来检查没有隐藏的文件?

8 个答案:

答案 0 :(得分:11)

从 Python 3.5+ 开始,

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

通常比 listdir() 执行得更快,因为 scandir() 是一个迭代器并且不使用某些函数来获取给定文件的统计信息。

答案 1 :(得分:2)

嗯,我刚试过你的代码改变了一个空目录的路径,它确实打印了#34;空"对我来说,所以下载中必须有隐藏文件。您可以尝试循环浏览所有文件并检查它们是否以'开头。'或不。

编辑:

试试这个。它对我有用。

if [f for f in os.listdir(downloadsFolder) if not f.startswith('.')] == []:
    print "empty"
else: 
    print "not empty"

答案 2 :(得分:1)

您可以使用os module使用这两种方法。

第一个选项:

import os
if len(os.listdir('/your/path')) == 0:
    print("Directory is empty")
else:    
    print("Directory is not empty")

第二个选项:

import os
if not os.listdir('/your/path'):
    print("Directory is empty")
else:    
    print("Directory is not empty")

但是,os.listdir()可以引发异常,例如,给定路径不存在。因此,您需要解决这个问题。

import os
dir_name = '/your/path'
if os.path.exists(dir_name) and os.path.isdir(dir_name):
    if not os.listdir(dir_name):
        print("Directory is empty")
    else:    
        print("Directory is not empty")
else:
    print("Given Directory don't exists")

希望对您有帮助。

答案 3 :(得分:0)

我想你可以试试这段代码:

directory = r'path to the directory'

from os import walk

f = [] #to list the files

d = [] # to list the directories


for (dirpath, dirnames, filenames) in walk(directory):

    f.extend(filenames)
    d.extend(dirnames)
    break

if len(f) and len(d) != 0:
    print('Not empty')
else:
    print('empty')

答案 4 :(得分:0)

尝试:

import os
dirContents = os.listdir(downloadsFolder)
if len(pathContents) == 0:
    print('Folder is Empty')
else:
    print('Folder is Not Empty')

答案 5 :(得分:0)

另一个版本:

def is_folder_empty(dir_name):
    import os
    if os.path.exists(dir_name) and os.path.isdir(dir_name):
        return not os.listdir(dir_name)
    else:
        raise Exception(f"Given output directory {dir_name} doesn't exist")

答案 6 :(得分:-2)

我一直在使用os.listdir('/your/path'),然后您可以检查此结果的len

但是,还有另一个类似的选项:
os.path.getsize(path)-返回path的大小(以字节为单位)。

import os

if os.path.getsize('/your/path'):
    print('Not empty')
else:
    print('Empty')

答案 7 :(得分:-4)

在python os中,有一个名为listdir的函数,它返回给定目录的文件内容数组。因此,如果数组为空,则表示目录中没有文件。

这是一段代码段;

import os 
path = '../../Downloads' 
if os.listdir(path) == []: 
    print "Empty" 
else: 
    print "Not empty"  

希望这就是你要找的东西。