| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | 
| 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 パターン**\\ |