Caractères autorisés dans le nom de fichier

Où puis-je trouver une liste de caractères autorisés dans les noms de fichiers, en fonction du système d’exploitation? (par exemple sur Linux, le caractère : est autorisé dans les noms de fichiers, mais pas sous Windows)

    Vous pouvez commencer par la page Wikipedia Filename . Il possède une table de taille assez décente ( comparaison des limitations de nom de fichier ) répertoriant les caractères réservés à de nombreux systèmes de fichiers.

    Ainsi que les noms de fichiers réservés eux-mêmes comme CON sous MS-DOS. Je me souviens avoir été mordu par cela une fois quand j’ai raccourci dans le fichier const.h de const.h à con.h et passé une demi-heure à comprendre pourquoi le compilateur était suspendu. Il s’avère que DOS a ignoré les extensions pour les périphériques afin que con.h soit exactement le même que con , la console d’entrée (ce qui signifie que, bien sûr, le compilateur attendait que je tape dans le fichier d’ en -tête avant de continuer).

    Sous Windows, créez un fichier et atsortingbuez-lui un caractère non valide tel que \ dans le nom du fichier. En conséquence, vous obtiendrez une fenêtre contenant tous les caractères non valides d’un nom de fichier.

    entrer la description de l'image ici

    OK, en regardant Comparaison des systèmes de fichiers si vous ne vous souciez que des systèmes de fichiers principaux des joueurs:

    • Windows (FAT32, NTFS): Tout Unicode sauf NUL , \ , / , : , * , " , < , > , |
    • Mac (HFS, HFS +): Tout Unicode valide sauf : ou /
    • Linux (ext [2-4]): Tout octet sauf NUL ou /

    tous les octets, à l'exception de NUL , \ , / , : , * , " , < , > , | et vous ne pouvez pas appeler les fichiers / dossiers ou .. et aucun caractère de contrôle (bien sûr).

    Pour être plus précis sur Mac OS X (maintenant appelé MacOS) / dans le Finder, on interprète : dans le système de fichiers Unix.

    Cela a été fait pour la compatibilité ascendante lorsque Apple a quitté Classic Mac OS.

    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 également 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 sous la forme d’un / dans le Finder.

    Certaines applications peuvent être plus ressortingctives et interdire les deux caractères pour éviter toute confusion ou parce qu’elles conservaient la logique de la version précédente de Mac OS classique ou de la compatibilité des noms entre les plates-formes.

    Voici le code pour nettoyer le nom de fichier en python.

     import unicodedata def clean_name(name, replace_space_with=None): """ Remove invalid file name chars from the specified name :param name: the file name :param replace_space_with: if not none replace space with this ssortingng :return: a valid name for Win/Mac/Linux """ # ref: https://en.wikipedia.org/wiki/Filename # ref: https://stackoverflow.com/questions/4814040/allowed-characters-in-filename # No control chars, no: /, \, ?, %, *, :, |, ", <, > # remove control chars name = ''.join(ch for ch in name if unicodedata.category(ch)[0] != 'C') cleaned_name = re.sub(r'[/\\?%*:|"<>]', '', name) if replace_space_with is not None: return cleaned_name.replace(' ', replace_space_with) return cleaned_name