Où puis-je trouver une liste des caractères autorisés dans les noms de fichiers, en fonction du système d'exploitation? (par exemple sous Linux, le caractère :
est autorisé dans les noms de fichiers, mais pas sous Windows)
special-characters
filenames
mec python
la source
la source
Réponses:
Vous devriez commencer par la page de nom de fichier Wikipedia . Il a un tableau de taille décente ( comparaison des limitations de noms de fichiers ), répertoriant les caractères réservés pour un grand nombre de systèmes de fichiers.
Il a également une pléthore d' autres informations sur chaque système de fichiers, y compris les noms de fichiers réservés tels que
CON
sous MS-DOS. Je mentionne cela uniquement parce que j'ai été mordu par cela une fois lorsque j'ai raccourci un fichier d'inclusion deconst.h
àcon.h
et passé une demi-heure à comprendre pourquoi le compilateur se bloquait.Il s'avère que DOS ignorait les extensions pour les périphériques, ce qui
con.h
était exactement la même chose quecon
la console d'entrée (ce qui signifie, bien sûr, que le compilateur attendait que je saisisse le fichier d' en -tête avant de continuer).la source
POSIX "Fully portable filenames"
entrée, qui énumère ceux-ci:A–Z a–z 0–9 . _ -
OK, alors regardez la comparaison des systèmes de fichiers si vous ne vous souciez que des principaux systèmes de fichiers des joueurs:
NUL
,\
,/
,:
,*
,"
,<
,>
,|
. De plus, pas de caractère espace au début ou à la fin, et pas de point à la fin .:
ou/
NUL
ou/
de sorte que tout octet sauf
NUL
,\
,/
,:
,*
,"
,<
,>
,|
et vous ne pouvez pas avoir des fichiers / dossiers appel.
ou..
et pas de caractères de contrôle (bien sûr).la source
/
. Windows n'autorise pas la barre oblique inverse et certaines chaînes (par exempleCON
).:
s dans leurs noms.Sous Windows, créez un fichier et donnez-lui un caractère invalide comme
\
dans le nom du fichier. En conséquence, vous obtiendrez une fenêtre contextuelle avec tous les caractères invalides dans un nom de fichier.la source
Pour être plus précis sur Mac OS X (maintenant appelé MacOS)
/
dans le Finder est interprété:
dans le système de fichiers Unix.Cela a été fait pour la compatibilité descendante lorsque Apple est passé de Mac OS classique.
Il est légitime d'utiliser un
/
dans un nom de fichier dans le Finder, en regardant le même fichier dans le terminal, il apparaîtra avec un:
.Et cela fonctionne aussi dans l'autre sens: vous ne pouvez pas utiliser un
/
dans un nom de fichier avec le terminal, mais a:
est OK et apparaîtra comme un/
dans le Finder.Certaines applications peuvent être plus restrictives et interdire les deux caractères pour éviter toute confusion ou parce qu'elles ont conservé la logique de l'ancien Mac OS classique ou pour la compatibilité des noms entre les plates-formes.
la source
Pour les noms de fichiers "English locale", cela fonctionne très bien. J'utilise ceci pour nettoyer les noms de fichiers téléchargés. Le nom du fichier n'est pas destiné à être lié à quoi que ce soit sur le disque, c'est pour lorsque le fichier est en cours de téléchargement, il n'y a donc pas de vérification de chemin.
Fondamentalement, il supprime tous les caractères non imprimables et réservés pour Windows et d'autres systèmes d'exploitation. Vous pouvez
facilementétendre le modèle pour prendre en charge d'autres paramètres régionaux et fonctionnalités.la source
Voici le code pour nettoyer le nom du fichier en python.
la source
:return: a valid name for Win/Mac/Linux
n'est pas vrai en toutes circonstances.