在不创建列表的情况下选取目录 python

Picking directory without creating list python

如果这是微不足道的,我深表歉意,但我不确定该怎么做

我有一个非常大的目录,其中包含许多子目录 (300000+)。在每个目录中,我想 运行 一个命令(假设我想打开一个文件并向其中写入“Hello World”)。问题是由于内存问题,我不想将所有目录加载到一个巨大的列表中并进行迭代。

我正在考虑 shutil.move-ing 在其他地方完成的目录,但我不确定如何选择一个目录而不首先将它们全部加载到列表中(随机选择一个目录会工作也很好,也不知道该怎么做)

我也读过有关生成器的内容,但也不确定如何实现它们。

谢谢

os.scandir 遍历目录而不首先创建 list(与 os.listdir 相对)

示例:

import os

dirgen = os.scandir("foo")

print(next(dirgen).name)

在该示例中,目录 foo 被扫描,但只有第一个条目被(手动)迭代 next。这意味着如果你在循环中使用它,它不会存储目录条目,甚至更好:你可以在完成后跳出循环(短路)