4
在Unix下,os.path.normpath將多個斜槓摺疊爲單個斜槓,除非出現正好兩個斜槓時,路徑的起始位置爲。爲什麼是例外?爲什麼不os.normpath崩潰一個領先的雙斜槓?
爲了說明,我得到以下轉變:
//double/slash/stays -> //double/slash/stays
/double/slash//gone// -> /double/slash/gone/
double//slash//gone/ -> double/slash/gone
///triple/slash/gone -> /triple/slash/gone
////quad/slash/gone -> /quad/slash/gone
這似乎很奇怪,我。我可以隱約想象這對中小企業的坐騎或URLs很有用,但我不認爲我在乎這些。 Python的行爲有沒有隱藏的智慧?或者我應該自己崩潰領先的?
[更新] 考慮下面的答案,它看起來像最好的辦法是不要摺疊//,而是要麼只是接受它,或者把它當作一個錯誤。
你能舉一個這樣的例子嗎?我很感興趣,看看我可以在Linux系統中實現這個功能;) – Blender
據我所知,Linux沒有利用這個事實。 「實現定義」意味着實現可以做任何想要的事情,包括像單斜線一樣對待雙斜槓。 –
有趣。現在是隱藏智慧的是POSIX而不是Python。有人在unix世界的某個地方必須使用(或曾經計劃使用)//前綴 - 然後遊說POSIX制定這個奇怪的規則。任何想法是什麼意圖是或是什麼? –