我敢肯定,這是故意的,所以有人可以解釋的理由爲這種行爲:爲什麼我在python中強制使用os.path.expanduser?
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不嗲的,我必須真正有問題的概念不一致......
我不知道。作爲一名Python開發人員,我很欣賞這樣一個事實,即除非我明確要求這種行爲,否則Python不會繞過我的魔法擴展字符串。如果你正確地實現你的代碼,你可能會把你的調用集中到'expanduser',以減少煩惱。 – larsks
'chdir'假定它是一個文字名稱。而這絕對不是鴨子打字的意思。 –
創建一個處理所有行爲的函數。 Python爲您提供核心功能。 – Blender