Wo finde ich je nach Betriebssystem eine Liste der zulässigen Zeichen in Dateinamen? (zB unter Linux ist das Zeichen :
in Dateinamen erlaubt, aber nicht unter Windows)
special-characters
filenames
Python-Typ
quelle
quelle
Antworten:
Sie sollten mit der Wikipedia-Dateinamenseite beginnen . Es verfügt über eine Tabelle mit angemessener Größe ( Vergleich der Dateinamenbeschränkungen ), in der die reservierten Zeichen für eine Vielzahl von Dateisystemen aufgeführt sind.
Es enthält auch eine Vielzahl weiterer Informationen zu jedem Dateisystem, einschließlich reservierter Dateinamen, z. B.
CON
unter MS-DOS. Ich erwähne das nur, weil ich einmal davon gebissen wurde, als ich eine Include-Datei vonconst.h
bis verkürztecon.h
und eine halbe Stunde damit verbrachte, herauszufinden, warum der Compiler hängen blieb.Stellt sich heraus , DOS ignoriert Erweiterungen für Geräte , so dass
con.h
genau das gleiche wie warcon
, die Eingabekonsole (was bedeutet, natürlich, der Compiler wartete für mich in Typ der Header - Datei , bevor sie fortfahren würde).quelle
POSIX "Fully portable filenames"
Eintrag ansehen , in dem folgende aufgeführt sind:A–Z a–z 0–9 . _ -
OK, sehen Sie sich also den Vergleich von Dateisystemen an, wenn Sie sich nur für die Dateisysteme der Hauptakteure interessieren:
NUL
,\
,/
,:
,*
,"
,<
,>
,|
. Außerdem kein Leerzeichen am Anfang oder Ende und kein Punkt am Ende .:
oder/
NUL
oder/
so dass jeder Byte außer
NUL
,\
,/
,:
,*
,"
,<
,>
,|
und Sie keine Dateien haben können / Ordner aufrufen.
oder..
und keine Steuerzeichen (natürlich).quelle
/
. Windows erlaubt keinen Backslash und einige Zeichenfolgen (zCON
. B. ).:
s im Namen erstellen .Erstellen Sie unter Windows eine Datei und geben Sie ihr ein ungültiges Zeichen wie
\
im Dateinamen. Als Ergebnis erhalten Sie ein Popup mit allen ungültigen Zeichen in einem Dateinamen.quelle
Genauer gesagt wird Mac OS X (jetzt MacOS genannt)
/
im Finder:
im Unix-Dateisystem interpretiert.Dies wurde aus Gründen der Abwärtskompatibilität durchgeführt, als Apple von Classic Mac OS wechselte.
Es ist legitim, a
/
in einem Dateinamen im Finder zu verwenden und dieselbe Datei im Terminal zu betrachten, in der a angezeigt wird:
.Und umgekehrt funktioniert es auch: Sie können a
/
in einem Dateinamen nicht mit dem Terminal verwenden, aber a:
ist in Ordnung und wird/
im Finder als a angezeigt.Einige Anwendungen sind möglicherweise restriktiver und verbieten beide Zeichen, um Verwirrung zu vermeiden, oder weil sie die Logik von früheren Classic Mac OS beibehalten oder die Namenskompatibilität zwischen Plattformen gewährleisten.
quelle
Bei Dateinamen für "English locale" funktioniert dies einwandfrei. Ich verwende dies zum Bereinigen hochgeladener Dateinamen. Der Dateiname ist nicht dazu gedacht, mit irgendetwas auf der Festplatte verknüpft zu werden. Er dient zum Herunterladen der Datei, daher gibt es keine Pfadprüfungen.
Grundsätzlich werden alle nicht druckbaren und reservierten Zeichen für Windows und andere Betriebssysteme entfernt. Sie können das Muster
problemloserweitern, um andere Gebietsschemas und Funktionen zu unterstützen.quelle
Hier ist der Code zum Bereinigen des Dateinamens in Python.
quelle
:return: a valid name for Win/Mac/Linux
ist nicht unter allen Umständen wahr.