假设我正在使用 pathlib
编写代码我想遍历目录同一级别中的所有文件。
我可以通过两种方式做到这一点:
p = pathlib.Path('/some/path')
for f in p.iterdir():
print(f)
p = pathlib.Path('/some/path')
for f in p.glob('*'):
print(f)
有没有更好的选择?
最佳答案
my comment扩容:当您可以……不时,为什么要针对过滤器模式对 API 进行额外的解析和测试?glob
当您需要使用过滤功能并且过滤器简单且基于字符串时,它会更好,因为它简化了工作。当然,手写简单匹配(过滤 iterdir
通过 if path.endswith('.txt'):
而不是 glob('*.txt')
)可能比基于正则表达式的模式匹配 glob
更有效隐藏,但考虑到磁盘 I/O 慢了几个数量级,通常不值得重新发明轮子的麻烦。
但是,如果您根本不需要过滤功能,请不要使用它。 glob
在代码简单性或功能方面没有给您带来任何好处,并且会损害性能,因此只需使用 iterdir
.
关于python - pathlib glob ('*' ) 和 iterdir 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63001429/