Python忽略点文件和点目录,以最快的方式获取共享文件系统中的文件列表
在共享文件系统中获取文件列表并忽略隐藏目录和隐藏文件的最快方法是什么 my os.walk代码:Python忽略点文件和点目录,以最快的方式获取共享文件系统中的文件列表,python,python-3.x,linux,shell,os.walk,Python,Python 3.x,Linux,Shell,Os.walk,在共享文件系统中获取文件列表并忽略隐藏目录和隐藏文件的最快方法是什么 my os.walk代码: import os def oss_walk(x, follow_symlinks=False): for r,dirs,files in os.walk(x): dirs[:] = [d for d in dirs if not d.startswith('.')] files[:] = [f for f in files if not f.startsw
import os
def oss_walk(x, follow_symlinks=False):
for r,dirs,files in os.walk(x):
dirs[:] = [d for d in dirs if not d.startswith('.')]
files[:] = [f for f in files if not f.startswith('.')]
for i in files:
yield(os.path.join(r,i))
dir_path = "/some/path"
for f in oss_walk(dir_path):
print(f)
斯堪的纳维亚:
import os
from pathlib import Path
def scan_files(DIR):
for entry in os.scandir(DIR):
if entry.name.startswith("."):
continue
if entry.is_dir(follow_symlinks=False):
yield from scan_files(entry)
else:
yield Path(entry)
dir_path = "/some/path"
for f in scan_files(dir_path):
print(f)
它正在按预期工作,是正确的实施方式吗?如果不是,什么是有效的实施方式
主要关注性能,因为共享文件系统目录有数百万个文件
有没有其他好的工具可以以最快的方式实现这一点
很少有文档告诉我os.scandir的运行速度更快,但在我的例子中,os.walk的运行速度仍然比os.scandir快
结果:
[root@xxxxxxx]$ time python3.9 scan_walk_files.py > walk_count.txt
real 0m46.086s
user 0m15.223s
sys 0m14.942s
[root@xxxxxxx]$ time python3.9 scan_files-1.py > count.txt
real 1m3.870s
user 0m41.161s
sys 0m10.767s