如何从 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中?