2 回答

TA貢獻(xiàn)1842條經(jīng)驗 獲得超21個贊
為什么要將 API 用于針對過濾器模式的額外工作解析和測試,而您可以……不是?
glob
當(dāng)您需要使用過濾功能并且過濾器簡單且基于字符串時更好,因為它簡化了工作。當(dāng)然,手寫簡單匹配(iterdir
通過if path.endswith('.txt'):
而不是 過濾glob('*.txt')
)可能比基于正則表達(dá)式的模式匹配glob
隱藏更有效,但考慮到磁盤 I/O 慢幾個數(shù)量級,重新發(fā)明輪子通常不值得。
但是,如果您根本不需要過濾功能,請不要使用它。glob
在代碼簡單性或功能方面對您沒有任何好處,并且會損害性能,因此只需使用iterdir
.

TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊
行為上至少存在一個差異:
如果該目錄不存在,iterdir()
則引發(fā)一個FileNotFoundError
.?glob('*')
將這種情況視為一個空文件夾,返回一個空的可迭代對象。
>>> import pathlib
>>> path = pathlib.Path('/some/path')
>>> list(path.glob('*'))
[]
>>> list(path.iterdir())
Traceback (most recent call last):
? [...]
FileNotFoundError: [Errno 2] No such file or directory: '/some/path'
添加回答
舉報