Andrew Dalke wrote:
- This is confusing as heck:'/world'os.path.join("hello", "/world")'hello/slash/world'os.path.join("hello", "slash/world")'hello/slash//world' Trying to formulate a general rule for what the arguments to os.path.joinos.path.join("hello", "slash//world")
are supposed to be is really hard. I can't really figure out what it would be like on a non-POSIX/non-win32 platform.
Made trickier by the similar yet different behaviour of urlparse.urljoin.
import urlparse urlparse.urljoin("hello", "/world")
It does not make sense to me that these should be different.
Although the last two smell like bugs, the point of urljoin is to make an absolute URL from an absolute ("current page") URL and a relative (link) one. As we see:
I think we can probably conclude that this is what's supposed to happen. In the case of urljoin the first argument is interpreted as referencing an existing resource and the second as a link such as might appear in that resource.