如何逐一获取目录中的文件名?

How to get file names in a directory one-by-one?

我有一个包含超过 100k 个文件的目录。我需要遍历它们并执行操作。我不想在内存中加载整个文件列表,相反,我想同步遍历。在 Python 中实现该目标的最佳方法是什么?

编辑:

这个 question 与我的问题不相似,因为我不想一次将所有文件名加载到内存中。

假设您在名为 myDirectory

的变量中有一个目录路径作为 str 对象,这就是您循环访问目录中文件列表的方式
import os

directory = os.fsencode(myDirectory)

for file in os.listdir(directory):
     filename = os.fsdecode(file)
     # do opperations with filename

或者你可以使用路径库

from pathlib import Path

pathlist = Path(myDirectory)
for path in pathlist:
 filename = str(path)
 # Do opperations with filename

Pathlib.iterdir() 提供一个生成器来遍历目录,从而减少内存消耗:

import sys
import pathlib
import os

path = '/cache/srtm'
pl = pathlib.Path(path).iterdir()
oslb = os.listdir(path)
print(type(pl))
print (type(oslb))

print ('pathlib.iter: %s' % sys.getsizeof(pl))
print ('os.listdir: %s' % sys.getsizeof(oslb))

打印:

<class 'generator'>
<class 'list'>
pathlib.iter: 88
os.listdir: 124920