在Python中从目录(有大量文件)中选择随机文件

2024-01-23

我有一个包含大量文件(约 100 万)的目录。我需要从此目录中选择一个随机文件。由于文件太多,os.listdir自然需要永恒的时间才能完成。

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

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


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

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

有稍微更好的方法 - 但只是稍微好一点 - 请参阅从文件中随机选择行 https://stackoverflow.com/questions/3009832#3011085。简而言之,有一种方法可以从长度未知的列表/迭代器中选择随机项目,同时一次读取一个项目并确保可以以相同的概率选择任何项目。但这无济于事os.listdir()因为它已经返回了list在已经包含所有 1M+ 条目的内存中 - 所以你也可以询问它len() ...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中从目录(有大量文件)中选择随机文件 的相关文章

随机推荐

  • 在 prolog 中生成从 N 到 1 的数字列表

    我正在尝试生成从 N 到 1 的数字列表 而不使用任何内置谓词 例如 findall 或 numlist 我究竟做错了什么 pred N H T H is N N1 is N 1 pred N1 T pred 1 我不断收到错误 超出全局堆
  • 重载决策中是否实际选择了纯虚函数?

    来自我在上一个问题中的评论 由于不能存在抽象类的实例 因此在重载解析后永远无法选择纯虚函数 明显的反应是 abstract class a new derived class a gt pure virtual function 以及正确性
  • EditText - 文本和 EditText 行之间的间隙

    When I insert text to my EditText field the text has an abnormal gap between itself and the EditText s line Here s a pri
  • Java XPath(Apache JAXP 实现)性能

    注意 如果您也遇到此问题 请在 Apache JIRA 上投票 https issues apache org jira browse XALANJ 2540 https issues apache org jira browse XALA
  • 如何将 Android 应用本地化为印度尼西亚语

    我需要将我的应用程序本地化为印度尼西亚语言 我的应用程序的资源文件夹包含每种语言的 values 子文件夹列表 例如 values fr 文件夹 但我读到了令人困惑的信息Android 开发者文档 http developer androi
  • 当 xml 更改时,Odoo 模板页面不会更新

    刚刚为客户启动 Odoo 我在模板方面遇到了一个重大问题 一个简单的模板 有一些 div 和标题 我还有一个记录可以在主菜单中显示 当我第一次创建它时 一切正常 但是 如果我想添加或更改一些 html 这些更改不会显示在网站页面上 即使在我
  • 开源 Java CMS [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 谁能推荐一个好的java开源cms 我没有使用过任何java cms 但我使用过wordpress 环顾谷歌 我列出了 openCMS d
  • 使用 GCD 在后台创建 UIKit 对象是一种不好的做法吗?

    正如所指出的bbum https stackoverflow com users 25646 bbum here https stackoverflow com a 18463249 2707614 医生说 大多数情况下 UIKit 类只能
  • 贪心算法:区间着色

    在间隔调度中 算法是选择最早完成时间 但在间隔着色中 前者不起作用 是否有示例或解释为什么选择最早完成时间不适用于间隔着色 区间着色问题是 给定一组区间 我们想要着色 所有间隔 以便给定相同颜色的间隔不相交 目标是尽量减少使用的颜色数量 这
  • 如何在 jupyter markdown 单元格中创建新行

    md S a set of shops I a set of items M wants to get 我想在这两句话之间换一条新线 我们通常在第一个句子之后在新行之前放置 空格 但它在 Jupyter 中不起作用 我怎样才能做到这一点 我
  • 没有名为“requests”的模块 Python 3.5.0

    我需要使用requests在我的代码中 但它说它尚未安装 我收到以下错误 No module named requests 它实际上已在 python 2 7 中安装并运行 Requirement already satisfied use
  • 无法使用存储过程 pyodbc SQL SERVER 创建数据库

    我正在尝试调用一个从 pyodbc 创建数据库的存储过程 以下是代码的最小示例 import pyodbc conn pyodbc connect Driver SQL Server Server SERVERNAME Trusted Co
  • Tomcat 正在运行吗?

    有兴趣了解人们通常如何检查 Tomcat 是否在 Unix 环境上运行 我要么使用以下命令检查进程是否正在运行 ps ef grep java ps ef grep logging 或者我检查端口号是否处于活动状态 netstat a gr
  • 在 MAX(DATE) 上左连接

    我有 2 个表 交易 a 和价格 b 我想从表 b 中检索交易日期有效的价格 表a包含物品交易的历史记录 商店类型 日期 文章 表 b 包含商品价格的历史记录 商店类型 日期 文章 价格 目前我有这个 Select a Store type
  • opencv 更新单应性矩阵以适合双倍大小的图像

    我正在使用光流进行视频稳定 为了使 calcOpticalFlowPyrLK 更快地工作 我将原始图像缩小了 2 倍并在其上运行该函数 如何修改单应矩阵 通过 findHomography 检索 以便能够扭曲透视原始的较大图像 这有点晚了
  • 如何重置/初始化变量?

    我遇到了变量问题 首先看到这段代码 然后我会解释我的问题 if pygame Rect colliderect hammer rect mole rect random locations 100 440 350 440 600 440 1
  • 重新采样环回捕获

    我使用以下代码成功从 Wasapi 捕获声音 IWaveIn waveIn new WasapiLoopbackCapture waveIn DataAvailable OnDataReceivedFromWaveOut 我现在需要做的是将
  • 对于具有动态标头的大部分静态页面来说,最佳的 Rails 缓存选项是什么

    我有一组主要是静态的页面 除了它们的布局包含更加动态的标题之外 我很乐意将其页面缓存相对较长的时间 到目前为止 最有前途的想法似乎是使用不带布局的操作缓存 class SomethingController lt ApplicationCo
  • iOS 脸书集成

    我正在开发简单的 Facebook 集成 允许用户将高分发布到他们的墙上 doodlejump 处理这个问题的方式是我的灵感来源 我可以使用它 但它不是很干净 我不知道该怎么做 我按照以下说明进行操作http developers face
  • 在Python中从目录(有大量文件)中选择随机文件

    我有一个包含大量文件 约 100 万 的目录 我需要从此目录中选择一个随机文件 由于文件太多 os listdir自然需要永恒的时间才能完成 有什么办法可以绕过这个问题吗 也许以某种方式了解目录中的文件数量 不列出它 并选择随机生成 n 的