나는 그것이 의도적 인, 그래서 누군가가이 문제에 대한 이론적 근거를 설명 할 수있는 확신 : 결국, 거기에 사용자 이름과 경로가 이 명확하게 해결 될 수 있기 때문에파이썬에서 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를 호출해야합니다. 또한 사용자가 볼 수있는 경로를 인쇄하는 곳이면 어느 곳에서나 볼 수있는 것보다 읽기 쉽다는 것을 의미합니다.
이것은 내가 실제로 문제가 아니라면 나에게 우는 소리하지 파이썬 기대하는 의미로 일반화하는 "오리 입력"의 개념과 일치하지 않는 것 같다 ...
잘 모르겠습니다. 파이썬 개발자로서, 명시 적으로 그 동작을 요구하지 않는 한, 파이썬이 나에게 마술처럼 확장 된 문자열을 사용하지 않는다는 사실에 감사드립니다. 코드를 적절히 구현한다면,'expanduser'를 호출하는 것을 집중 시켜서 성가심을 덜어 줄 수 있습니다. – larsks
'chdir'은 리터럴 이름이라고 가정합니다. 그리고 그것은 가장 중요한 것은 오리 타이핑이 의미하는 바가 아닙니다. –
모든 동작을 처리하는 함수를 만듭니다. 파이썬은 핵심 기능을 제공합니다. – Blender