gpt4 book ai didi

python - 检查目录是否为空而不使用 os.listdir

转载 作者:行者123 更新时间:2023-12-04 09:16:56 25 4
gpt4 key购买 nike

我需要一个函数来检查一个目录是否为空,但它应该尽可能快,因为我将它用于数千个目录,最多可以有 100k 个文件。我实现了下一个,但看起来 python3 中的 kernel32 模块有问题(我在 FindNextFileW 上得到 OSError: exception: access violation writing 0xFFFFFFFFCE4A9500,从第一次调用开始)

import os
import ctypes
from ctypes.wintypes import WIN32_FIND_DATAW

def is_empty(fpath):
ret = True
loop = True
fpath = os.path.join(fpath, '*')
wfd = WIN32_FIND_DATAW()
handle = ctypes.windll.kernel32.FindFirstFileW(fpath, ctypes.byref(wfd))
if handle == -1:
return ret
while loop:
if wfd.cFileName not in ('.', '..'):
ret = False
break
loop = ctypes.windll.kernel32.FindNextFileW(handle, ctypes.byref(wfd))
ctypes.windll.kernel32.FindClose(handle)
return ret

print(is_empty(r'C:\\Users'))

最佳答案

您可以使用 os.scandir listdir 的迭代器版本,并在“迭代”第一个条目时简单地返回,如下所示:

import os

def is_empty(path):
with os.scandir(path) as scanner:
for entry in scanner: # this loop will have maximum 1 iteration
return False # found file, not empty.
return True # if we reached here, then empty.

关于python - 检查目录是否为空而不使用 os.listdir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63173324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com