如何逐一获取目录中的文件名?
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
我有一个包含超过 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