我有一个包含大量文件的目录(~1mil).我需要从这个目录中选择一个随机文件.由于文件太多,os.listdir自然需要永恒才能完成.
有没有办法可以绕过这个问题?也许以某种方式知道目录中的文件数量(没有列出它)并选择'n'文件,其中n是随机生成的?
目录中的文件是随机命名的.
我不确定这是否可能。即使在 VFS 或文件系统级别,也无法保证目录条目计数得到维护。例如,许多文件系统只是记录给定目录中包含的目录条目结构的组合字节大小。
如果目录项是固定大小的结构,则可以进行估计,但现在这种情况不常见(考虑 FAT32 的 LFN)。即使给定的文件系统确实提供了条目计数而无需遍历目录,或者如果 VFS 缓存了目录长度的记录,这些也肯定是操作系统、文件系统和内核特定的。