如何从 Python 中的目录中读取 n 个文件?

Posted

技术标签:

【中文标题】如何从 Python 中的目录中读取 n 个文件?【英文标题】:How to read n files from directory in Python? 【发布时间】:2017-08-23 13:18:27 【问题描述】:

我正在做一个 PyQT5 应用程序,它需要选择给定的文件夹,并列出其中的所有文件和目录。

为了获取路径,我使用如下简单的方法:

def open_path():
    dialog = QFileDialog()
    folder_path = dialog.getExistingDirectory(None, "Select Folder")
    return folder_path

编辑

这就是我获取根、目录和文件的方式

import os

# this is where I have my open_path() method defined, so I don't write it again

path = str(open_path())
roots = next(os.walkpath(path))[0]
dirs = next(os.walkpath(path))[1]
files = next(os.walkpath(path))[2]

我有一个包含大约 11000 个文件的文件夹。我使用 QFileDialog 来获取文件夹,并将其拆分为 3 个列表(根、目录、文件),并使用 QDir 来显示它。

由于它的大小,我想限制 QDir 仅显示前 1000 个文件,并有可能在达到 1000 后加载更多。

这可能吗?怎么做?

我找不到任何关于如何实现这种过滤器的文档或示例。

我在网上到处搜索这个信息,但只找到了这个解决方案 -> How to read first n-th files from directory (pleaso NOT a "head -n solution")? 其中涉及 bash 脚本?

如果可能,我想避免使用 Popen 和 PIPE。

欢迎任何帮助或提示。

谢谢。

【问题讨论】:

这毫无意义:getExistingDirectory 函数只显示目录,而不显示文件。 os.walkpath 代码与在 QFileDialog 中显示文件有什么关系? @ekhumoro 抱歉。这是一个错字。我已经更新了这个问题。基本上我想使用 QFileDialog 来获取路径,将路径拆分为 3 个列表,并使用 QDir 仅显示文件。 这仍然没有意义:您不能在 QDir 中显示任何内容。与其试图描述事物,不如发布一些真实的、有效的代码来演示问题。在 Qt 的视图类之一中显示 11000 个项目并不是一个特别大的数字。 @ekhumoro - 抱歉回复晚了。在看到你的回复之前我真的撞到了墙,你是对的。我最终使用 QDir 来获取当前的工作目录,并使用 os.walk 浏览目录。我使用打印功能只是为了吐出内容。 【参考方案1】:
  parent_list = os.listdir("Here goes the path for directory")
  count =0
  for child in parent_list:
   if count < 1000:
      print(child)
   else
       break
   count = count+1

这里 parent_list 包含给定目录中的所有文件,您可以使用循环访问列表中的前 1000 个文件。 child 是目录中的文件

【讨论】:

以上是关于如何从 Python 中的目录中读取 n 个文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 python 从位于同一目录中的多个 zip 文件夹中读取 csv 文件?

如何批量读取csv格式的文件名及文件内容到新的Excel中?

如何在 Databricks 中迭代以读取存储在数据湖不同子目录中的数百个文件?

Python:如何从内存中的 zip 文件中读取图像?

Shell如何实现从文件中的第n行开始读取记录?

如何循环 python 读取一组 HTML 文件并转储到 JSON