両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン |
python:pathlib [2021/05/19 09:45] – ともやん | python:pathlib [2023/05/27 09:00] (現在) – [glob.iglob() の実装] ともやん |
---|
====== pathlib, 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 パターン**\\ |
</code> | </code> |
| |
<WRAP prewrap 100% #mincode> | <WRAP mincode_long> |
<code python python38/Lib/glob.py> | <code python python38/Lib/glob.py> |
"""Filename globbing utility.""" | """Filename globbing utility.""" |
ノート(翻訳) Unix ベースのシステムでは、scandir() はシステムの opendir() 関数と readdir() 関数を使用します。 Windows では、Win32 FindFirstFileW 関数と FindNextFileW 関数を使用します。 | ノート(翻訳) Unix ベースのシステムでは、scandir() はシステムの opendir() 関数と readdir() 関数を使用します。 Windows では、Win32 FindFirstFileW 関数と FindNextFileW 関数を使用します。 |
</note> | </note> |
<WRAP prewrap 100% #mincode> | <WRAP mincode_long> |
<code c cpython/Modules/posixmodule.c> | <code c cpython/Modules/posixmodule.c> |
/*[clinic input] | /*[clinic input] |