UNIXの場合、os.path.normpathは、スラッシュを1つにまとめますスラッシュがちょうど2つある場合を除き、パスの先頭にはと表示されます。なぜ例外?説明するために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
これは私には奇妙に思えます。私はこれがSMBマウントやURLSには便利だとはっきり想像することができますが、私はそれらを気にしません。 Pythonの振る舞いに隠された知恵があるのでしょうか。
最善のことは//を崩壊しないように、[更新]下記の答えを考慮して 、それは見えますが、ただそれを受け入れるか、エラーとしてそれを治療するためのいずれか。
あなたはこれの例を挙げることができますか?私はこれを私のLinuxシステムでどのように実装できるかを知りたいと思っています; – Blender
私が知る限り、Linuxはこの事実を利用していません。 「実装定義」とは、インプリメンテーションが、単一のスラッシュのように二重スラッシュを処理することを含め、必要なものを実行できることを意味します。 –
興味深い。知恵が隠されているPythonではなくPOSIXです。 Unix世界のどこかの誰かが//接頭辞を使用しなければなりません - そして、この奇妙な規則を作るためにPOSIXを動かす必要があります。その意図が何であるか、あるいは何であったか? –