我在 Windows 机器上工作,想检查网络路径上的目录是否为空。
首先想到的是调用 os.listdir() 并查看它的长度是否为 0。
即
def dir_empty(dir_path):
return len(os.listdir(dir_path)) == 0
因为这是一个网络路径,我并不总是有良好的连接,并且因为一个文件夹可能包含数千个文件,所以这是一个非常慢的解决方案。还有更好的吗?
请您参考如下方法:
目前我找到的最快的解决方案:
def dir_empty(dir_path):
return not any((True for _ in os.scandir(dir_path)))
或者,如以下评论中所建议的那样:
def dir_empty(dir_path):
return not next(os.scandir(dir_path), None)
在慢速网络上,我正在处理这需要几秒钟而不是几分钟(os.listdir() 版本需要几分钟)。这似乎更快,因为 any 语句只计算第一个 True 语句。
