python - pathlib glob ('*' ) 和 iterdir 有什么区别?

标签 python pathlib

假设我正在使用 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/

相关文章:

python - 使用 pathlib 将目录添加到 sys.path

python - 知道路径的最后一部分和基目录时,在 python 中查找文件的绝对路径?

python - 如何解析相对于任何目录的相对路径

python - 为什么我的代码有效(使用函数过滤数据框)?

python flask上传文件但不保存使用

python - 通过线程(或替代方式)在一个应用程序中使用多个 react 器(主循环)

python - 抽象类和字典的 mypy 问题

python - Pathlib 在 Ubuntu 上找不到文件

python - 使用 Pandas/Python 在给定相应数据的情况下填充 excel 中的列