両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン |
python:pathlib [2023/05/26 06:49] – ともやん | python:pathlib [2023/05/27 09:00] (現在) – [glob.iglob() の実装] ともやん |
---|
====== pathlib, walk, glob, os ====== | ====== pathlib, glob.iglob(), os.walk() ====== |
| |
===== os.walk() の実装 ===== | ===== os.walk() の実装 ===== |
**os.walk(top, topdown=True, onerror=None, followlinks=False)** は、内部的には **os.scandir(path='.')** によって処理される。\\ | <html><code>os.walk(top, topdown=True, onerror=None, followlinks=False)</code></html> は、内部的には <html><code>os.scandir(path='.')</code></html> によって処理される。\\ |
| |
===== glob.iglob() の実装 ===== | ===== glob.iglob() の実装 ===== |
**glob.iglob(pathname, *, recursive=False)** は、内部的には **os.scandir(path='.')** によって処理される。\\ | <html><code>glob.iglob(pathname, *, recursive=False)</code></html> は、内部的には <html><code>os.scandir(path='.')</code></html> によって処理される。\\ |
**os.scandir(path='.')** によって取得された内容は **list()** 化されて **fnmatch.filter(names, pattern)** によってフィルター処理される。\\ | <html><code>os.scandir(path='.')</code></html> によって取得された内容は **list()** 化されて <html><code>fnmatch.filter(names, pattern)</code></html> によってフィルター処理される。\\ |
**fnmatch.filter(names, pattern)** の **pattern** は **fnmatch.translate(pattern)** で正規表現に変換してから **re.compile()** される。ここで注意が必要なのは、 **pattern** は **__Unix Shell Style__** のパターンであって正規表現は利用できない。\\ | ここで注意が必要なのは、 **pattern** は **__Unix Shell Style__** のパターンであって正規表現は利用できない。\\ |
| <html><code>fnmatch.filter(names, pattern)</code></html> の **pattern** は <html><code>fnmatch.translate(pattern)</code></html> で正規表現に変換してから <html><code>re.compile()</code></html> される。\\ |
\\ | \\ |
**OK パターン**\\ | **OK パターン**\\ |