如何解决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 举报,一经查实,本站将立刻删除。