tôi chắc chắn rằng đó là cố ý, vì vậy ai đó có thể giải thích lý do cho hành vi này:Tại sao tôi buộc phải os.path.expanduser trong python?
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"))
>>>
Nó thực sự gây phiền nhiễu từ đó, sau khi tất cả, con đường với một tên người dùng trong đó thể được giải quyết một cách rõ ràng ... Tôi muốn viết mã có thể xử lý bất kỳ loại đầu vào nào mà người dùng có thể cho tôi, nhưng hành vi này yêu cầu tôi gọi expanduser trên mọi đường dẫn mà mã của tôi phải xử lý. Nó cũng có nghĩa là bất cứ nơi nào tôi in đường dẫn đó ra cho người dùng xem, nó sẽ hơi dễ đọc hơn so với những gì họ đã cho tôi.
Điều này có vẻ không phù hợp với các khái niệm về "gõ vịt", trong đó tôi khái quát để có nghĩa là tôi mong đợi python không rên rỉ với tôi, trừ khi có thực sự là một vấn đề ...
Tôi không biết. Là một nhà phát triển Python, tôi đánh giá cao thực tế là Python không đi xung quanh các chuỗi mở rộng một cách kỳ diệu vào tôi trừ khi tôi yêu cầu một cách rõ ràng hành vi đó. Nếu bạn thực hiện mã của bạn đúng cách, bạn có thể tập trung các cuộc gọi của bạn vào 'expanduser' để làm cho nó ít phiền toái hơn. – larsks
'chdir' giả định đó là tên chữ. Và đó chắc chắn không phải là cách gõ vịt nghĩa là gì. –
Tạo một hàm xử lý tất cả các hành vi. Python cung cấp cho bạn chức năng cốt lõi. – Blender