在不创建列表的情况下选取目录 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
。这意味着如果你在循环中使用它,它不会存储目录条目,甚至更好:你可以在完成后跳出循环(短路)
如果这是微不足道的,我深表歉意,但我不确定该怎么做
我有一个非常大的目录,其中包含许多子目录 (300000+)。在每个目录中,我想 运行 一个命令(假设我想打开一个文件并向其中写入“Hello World”)。问题是由于内存问题,我不想将所有目录加载到一个巨大的列表中并进行迭代。
我正在考虑 shutil.move-ing 在其他地方完成的目录,但我不确定如何选择一个目录而不首先将它们全部加载到列表中(随机选择一个目录会工作也很好,也不知道该怎么做)
我也读过有关生成器的内容,但也不确定如何实现它们。
谢谢
os.scandir
遍历目录而不首先创建 list
(与 os.listdir
相对)
示例:
import os
dirgen = os.scandir("foo")
print(next(dirgen).name)
在该示例中,目录 foo
被扫描,但只有第一个条目被(手动)迭代 next
。这意味着如果你在循环中使用它,它不会存储目录条目,甚至更好:你可以在完成后跳出循环(短路)