微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

我的 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 快

https://pypi.org/project/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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。