我正在尝试检查文件夹是否为空并执行以下操作:
import os
downloadsFolder = '../../Downloads/'
if not os.listdir(downloadsFolder):
print "empty"
else:
print "not empty"
不幸的是,我总是得到"不是空的"无论我在该文件夹中是否有任何文件。是因为可能存在一些隐藏的系统文件?有没有办法修改上面的代码来检查没有隐藏的文件?
答案 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"
希望这就是你要找的东西。