Gdzie mogę znaleźć listę dozwolonych znaków w nazwach plików, w zależności od systemu operacyjnego? (np. w systemie Linux znak :
jest dozwolony w nazwach plików, ale nie w systemie Windows)
special-characters
filenames
Python dude
źródło
źródło
Odpowiedzi:
Powinieneś zacząć od strony Nazwa pliku Wikipedii . Ma przyzwoitą tabelę ( porównanie ograniczeń nazw plików ), zawierającą znaki zastrzeżone dla wielu systemów plików.
Zawiera również mnóstwo innych informacji o każdym systemie plików, w tym zastrzeżone nazwy plików, takie jak
CON
w systemie MS-DOS. Wspominam o tym tylko dlatego, że raz ugryzło mnie to, kiedy skróciłem plik dołączania zconst.h
docon.h
i spędziłem pół godziny na zastanawianiu się, dlaczego kompilator się zawiesił.Okazuje się DOS ignorowane rozszerzeń dla urządzeń, tak aby
con.h
był dokładnie taki sam jakcon
konsola wejściowego (czyli, oczywiście, kompilator czekał na mnie wpisać w pliku nagłówkowym, zanim będzie kontynuować).źródło
POSIX "Fully portable filenames"
wpis, który wymienia te:A–Z a–z 0–9 . _ -
OK, więc patrząc na Porównanie systemów plików, jeśli zależy Ci tylko na systemach plików głównych odtwarzaczy:
NUL
,\
,/
,:
,*
,"
,<
,>
,|
. Poza tym nie ma spacji na początku ani na końcu ani kropki na końcu .:
lub/
NUL
lub/
więc każdy bajt z wyjątkiem
NUL
,\
,/
,:
,*
,"
,<
,>
,|
i nie można mieć pliki / foldery zadzwonić.
lub..
nie ma żadnych znaków sterujących (oczywiście).źródło
/
. Windows nie zezwala na lewy ukośnik i niektóre ciągi znaków (npCON
.).:
s w nazwie.W systemie operacyjnym Windows utwórz plik i nadaj mu nieprawidłowy znak, taki jak
\
w nazwie pliku. W rezultacie otrzymasz wyskakujące okienko ze wszystkimi nieprawidłowymi znakami w nazwie pliku.źródło
Mówiąc dokładniej, Mac OS X (obecnie nazywany MacOS)
/
w Finderze jest interpretowany:
w systemie plików Unix.Dokonano tego w celu zapewnienia zgodności z poprzednimi wersjami, gdy Apple przeniósł się z klasycznego Mac OS.
Prawidłowe jest użycie
/
w nazwie pliku w Finderze, patrząc na ten sam plik w terminalu, który pojawi się z rozszerzeniem:
.Działa to również w drugą stronę: nie możesz użyć a
/
w nazwie pliku z terminalem, ale a:
jest OK i pojawi się jako a/
w Finderze.Niektóre aplikacje mogą być bardziej restrykcyjne i zabraniać obu znaków, aby uniknąć nieporozumień lub dlatego, że zachowały logikę z poprzedniego klasycznego systemu Mac OS lub ze względu na zgodność nazw między platformami.
źródło
W przypadku nazw plików „angielskie locale” działa to ładnie. Używam tego do odkażania przesłanych nazw plików. Nazwa pliku nie ma być powiązana z czymkolwiek na dysku, służy do pobierania pliku, dlatego nie ma sprawdzania ścieżki.
Zasadniczo usuwa wszystkie niedrukowalne i zastrzeżone znaki dla systemu Windows i innych systemów operacyjnych. Możesz
łatworozszerzyć wzorzec, aby obsługiwał inne lokalizacje i funkcje.źródło
Oto kod do czyszczenia nazwy pliku w Pythonie.
źródło
:return: a valid name for Win/Mac/Linux
nie jest prawdą we wszystkich okolicznościach.