Python忽略点文件和点目录,以最快的方式获取共享文件系统中的文件列表

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

在共享文件系统中获取文件列表并忽略隐藏目录和隐藏文件的最快方法是什么

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.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