私はそれが意図的であると確信しているので、誰かがこの振る舞いの理論的根拠を説明できますか?
Python 2.7.2 (default, Oct 13 2011, 15:27:47)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from os.path import isdir,expanduser
>>> isdir("~amosa/pdb")
False
>>> isdir(expanduser("~amosa/pdb"))
True
>>>
>>> from os import chdir
>>> chdir("~amosa/pdb")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 2] No such file or directory: '~amosa/pdb'
>>> chdir(expanduser("~amosa/pdb"))
>>>
結局のところ、ユーザー名を含むパスは明確に解決できるので、本当に面倒です...ユーザーからのあらゆる種類の入力を処理できるコードを記述したいのですが、この動作では、expanduserを呼び出す必要があります。私のコードが処理しなければならないすべてのパス。また、ユーザーが見ることができるようにそのパスを印刷すると、ユーザーが私に与えたものよりも少し読みにくくなることも意味します。
これは、「ダックタイピング」の概念と矛盾しているようです。一般化すると、実際に問題がない限り、Pythonが私に泣き言を言わないことを期待しています...