python递归查找_[Python]递归查找文件(最简洁)
google了一下發現大多數人都是自己實現的,其實python標準庫里是有相關方法的,更簡潔,而且支持pattern匹配。
其實自己實現也沒多難,但是一個非常重要的經驗告訴我,內置方法哪怕代碼跟你的一模一樣都會比你自己寫的快很多,所以當你想要一個功能的時候,最好先查一下標準庫里有沒有,或者有沒有其他人已經做過的,而不是上來就去自己實現,不一定有人家寫的好不說,效率還不高。
Path.glob(pattern)
解析相對于此路徑的通配符 pattern,產生所有匹配的文件:
>>> sorted(Path('.').glob('*.py'))
[PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')]
>>> sorted(Path('.').glob('*/*.py'))
[PosixPath('docs/conf.py')]
** 模式表示 “此目錄以及所有子目錄,遞歸”。換句話說,它啟用遞歸通配:
>>> sorted(Path('.').glob('**/*.py'))
[PosixPath('build/lib/pathlib.py'),
PosixPath('docs/conf.py'),
PosixPath('pathlib.py'),
PosixPath('setup.py'),
PosixPath('test_pathlib.py')]
注解:在一個較大的目錄樹中使用 ** 模式可能會消耗非常多的時間。
Path.rglob(pattern)
這就像調用 Path.glob時在給定的相對 pattern 前面添加了**/
>>> sorted(Path().rglob("*.py"))
[PosixPath('build/lib/pathlib.py'),
PosixPath('docs/conf.py'),
PosixPath('pathlib.py'),
PosixPath('setup.py'),
PosixPath('test_pathlib.py')]
Nice and easy.
總結
以上是生活随笔為你收集整理的python递归查找_[Python]递归查找文件(最简洁)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android webview 字体 系
- 下一篇: mysql用户如何迁移_迁移MySQL用