Warum meldet Python (IronPython) "Ungültige Zeichen im Pfad", wenn das Wort bin verwendet wird?

8

Ich erhalte den Fehler "Ungültige Zeichen im Pfad", wenn ich chdir-Befehle in Iron Python ausführe. Dies passiert in der Laufzeit mit meinem Code, aber selbst in der Iron Python-Konsole hat es dieses Problem. Ich benutze das Modul nt, weil das Modul os im Code nicht funktioniert (scheint ein bekanntes Problem zu sein).

Wenn man ein wenig herumspielt, stellt sich heraus, dass die "illegalen Charaktere" eigentlich das Wort "bin" sind. Unten ist der Text von der Konsole, der zeigt, dass ich den Fehler nur bekomme, wenn ich zum Verzeichnis bin navigiere.

Hier ist das Beispiel

%Vor%

Was noch schlimmer ist, ich werde zu einem völlig anderen Verzeichnis navigieren (das nicht einmal ein bin-Verzeichnis hat) und versuchen, zu einem Unterverzeichnis "bin" zu navigieren, und ich werde immer noch diesen Fehler bekommen!

Irgendwelche Ideen?

    
Mike 11.09.2012, 13:57
quelle

3 Antworten

14

Das Trennzeichen \ ist ebenfalls ein Python-Escape-Zeichen. Verdopple sie, oder besser, verwende stattdessen r'' rohe Pythonliterale:

%Vor%

Zum Beispiel ist \n ein Newline-Zeichen und \t wird als TAB interpretiert. In Ihrem speziellen Fall wird \b als Rückschritt interpretiert.

    
Martijn Pieters 11.09.2012, 13:59
quelle
5

\ ist ein Escape-Zeichen in Python-Strings. \b ist Backspace, weshalb es auf \bin stößt: Sie geben nicht das Verzeichnis Directory\bin an, Sie geben das Verzeichnis Directory<backspace>in an, was kein legaler Pfad ist und auch wenn es nicht existiert .

Sie können die Zeichenfolge schreiben, indem Sie die umgekehrten Schrägstriche verdoppeln oder indem Sie den von Martijn vorgeschlagenen Indikator r verwenden. Eine dritte Alternative ist die Verwendung von Schrägstrichen wie in jedem anderen zivilisierten Betriebssystem. Windows ist sehr glücklich, diese zu verwenden.

    
kindall 11.09.2012 14:04
quelle
1

Windows und die meisten anderen Betriebssysteme erkennen die Schrägstriche. Also, anstelle des umgekehrten Schrägstrichs, Doppel-Backslash oder r '' (mehr zu den String-Literalen hier ) Sie können einfach vorwärts Schrägstriche verwenden und Sie sind gut zu gehen. Die Antwort hier ist ebenfalls detailliert.

UPDATE: PS: Verwenden Sie Backslashes und String-Literale mit Vorsicht. Überprüfen Sie immer auf Ihren speziellen Fall. In dieser Antwort

gibt es dazu einen guten Kommentar     
Alain 06.08.2013 19:20
quelle