0801: モジュール名からファイル名を作る¶
問題¶
ドット区切りのモジュール名 name を、相対的な Python ファイル名へ変換する関数 module_filename(name: str) -> str を実装してください。
たとえば、"pkg.tools.reader" は "pkg/tools/reader.py" に変換します。
制約¶
nameは文字列です。- モジュール名の各要素は Python の識別子でなければなりません。
- 空の要素を含む名前に対しては
ValueErrorを送出します。 - Python のキーワードを要素に含む名前に対しては
ValueErrorを送出します。 - 区切り文字には
/を使います。
例¶
>>> module_filename("spam")
'spam.py'
>>> module_filename("pkg.tools.reader")
'pkg/tools/reader.py'
>>> module_filename("pkg..reader")
Traceback (most recent call last):
...
ValueError: invalid module name
>>> module_filename("class")
Traceback (most recent call last):
...
ValueError: invalid module name
発展¶
ファイル名ではなくパッケージの __init__.py を指す版を追加してください。
参考¶
- 『Python Distilled』第8章「モジュールとimport文」
- 『Python Distilled』第8章「パッケージ」
- 『Python Distilled』第8章「パッケージ内のインポート」