Warum macht das Benennen einer Datei 'con.txt' in Windows Python zum Schreiben in die Konsole, nicht zur Datei?

8

Ich brauche Hilfe beim Debuggen eines seltsamen Dateiverhaltens in Python. Nimm das folgende Skript ( write_con.py ):

%Vor%

In Linux erstellt dies eine Datei namens con.txt mit dem Inhalt hi . In Windows schreibt dies hi auf die Konsole und erstellt keine Datei. Ich habe das mit Python 2.5.1, 2.6.3, 2.6.5 und 2.7.2 versucht. Beispiel run:

%Vor%

Aber eine Datei, die etwas anderes als etwas benannt ist, das mit con beginnt, funktioniert gut ( write_other_con.py ):

%Vor%

Hier ist ein Lauf:

%Vor%

Was bewirkt, dass Windows-Versionen von Python in die Konsole schreiben, wenn das Präfix der benannten Datei con ?

lautet     
Rich 27.03.2012, 18:48
quelle

4 Antworten

9

Sie müssen die Wikipedia-Filename-Seite überprüfen. Es hat eine Tabelle mit den reservierten Zeichen für ziemlich viele Dateisysteme.

In Windows- und DOS-Dienstprogrammen sind möglicherweise auch einige Wörter reserviert und können nicht als Dateinamen verwendet werden. Beispiel: DOS-Gerätedatei:

CON , PRN, AUX, CLOCK $, NUL COM0, COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9 LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 und LPT9.

    
Thanasis Petsas 27.03.2012, 18:56
quelle
10

Vermächtnis . In DOS wird das Schreiben in eine Datei namens "CON" stattdessen in die Konsole geschrieben; Windows setzt diese Tradition fort.

    
Ignacio Vazquez-Abrams 27.03.2012 18:50
quelle
5

Dies ist kein Python-Fehler, sondern eine Windows-Namenskonvention. Es gibt eine Liste mit reservierten Schlüsselwörtern, unter denen Windows keine Dateien oder Ordner speichern kann, einschließlich CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9.

    
PenguinCoder 27.03.2012 18:54
quelle
1

In Windows ist con reserviert Wort und kann nicht als Dateiname verwendet werden.

    
Computer_Engineer 27.03.2012 18:56
quelle

Tags und Links