gpt4 book ai didi

python - 在 Python 中从一个目录(包含大量文件)中选择一个随机文件

转载 作者:太空狗 更新时间:2023-10-29 18:08:26 24 4
gpt4 key购买 nike

我有一个包含大量文件(~100 万)的目录。我需要从此目录中选择一个随机文件。既然有这么多文件,os.listdir 自然要花很长时间才能完成。

有什么办法可以避免这个问题吗?也许以某种方式了解目录中的文件数量(无需列出)并选择随机生成 n 的第 n 个文件?

目录中的文件是随机命名的。

最佳答案

唉,我不认为你的问题有解决方案。第一,我不知道可移植的 API 会返回目录中的条目数(不首先枚举它们)。第二,我认为没有 API 可以按编号而不是按名称返回目录条目。

总的来说,一个程序必须枚举 O(n) 个目录条目才能获得一个随机条目。确定条目数然后选择一个的简单方法要么需要足够的 RAM 来保存完整列表(os.listdir()),要么必须第二次枚举目录以找到随机( n) item - 总体 n+n/2 平均操作。

有稍微好一点的方法 - 但只是稍微好一点 - 请参阅 randomly-selecting-lines-from-files .简而言之,有一种方法可以从长度未知的列表/迭代器中随机选择项目,同时一次读取一个项目并确保可以以相等的概率选择任何项目。但这对 os.listdir() 没有帮助,因为它已经在内存中返回 list,其中已经包含所有 1M+ 条目 - 所以你也可以询问它 len() ...

关于python - 在 Python 中从一个目录(包含大量文件)中选择一个随机文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3247202/

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