227 Stimmen

Warum verkettet Path.Combine Dateinamen, die mit Path.DirectorySeparatorChar beginnen, nicht richtig?

Von der Sofortiges Fenster in Visual Studio:

> Path.Combine(@"C:\x", "y")
"C:\\x\\y"
> Path.Combine(@"C:\x", @"\y")
"\\y"

Es scheint, dass sie beide gleich sein sollten.

Das alte FileSystemObject.BuildPath() funktionierte nicht auf diese Weise...

0voto

ilias iliadis Punkte 531

Wie von Ryan erwähnt, tut es genau das, was in der Dokumentation steht.

Ab DOS-Zeiten wird zwischen dem aktuellen Laufwerk und dem aktuellen Pfad unterschieden. \ ist der Wurzelpfad, aber für die AKTUELLE DISK.

Für jedes " Festplatte " gibt es einen separaten " Strompfad ". Wenn Sie den Datenträger mit cd D: ändern Sie nicht den aktuellen Pfad zu D:\ , sondern zu: " D:\whatever\was\the\last\path\accessed\on\this\disk "...

Unter Windows wird also eine wörtliche @"\x" bedeutet: "CURRENTDIS K:\x ". Daher Path.Combine(@"C:\x", @"\y") hat als zweiten Parameter einen Root-Pfad, keinen relativen, allerdings nicht in einem bekannten Laufwerk... Und da nicht bekannt ist, welches das "aktuelle Laufwerk" sein könnte, gibt Python zurück "\\y" .

>cd C:
>cd \mydironC\apath
>cd D:
>cd \mydironD\bpath
>cd C:
>cd
>C:\mydironC\apath

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X