Onde posso encontrar uma lista de caracteres permitidos nos nomes de arquivos, dependendo do sistema operacional? (por exemplo, no Linux, o personagem :
é permitido nos nomes de arquivos, mas não no Windows)
special-characters
filenames
cara python
fonte
fonte
Respostas:
Você deve começar com a página Nome do arquivo da Wikipedia . Possui uma tabela de tamanho decente ( comparação de limitações de nome de arquivo ), listando os caracteres reservados para muitos sistemas de arquivos.
Ele também possui inúmeras outras informações sobre cada sistema de arquivos, incluindo nomes de arquivos reservados, como
CON
no MS-DOS. I mencionar que só porque eu fui mordido por que uma vez quando eu encurtado um arquivo de inclusão a partirconst.h
decon.h
e passou meia hora tentando descobrir porque o compilador pendurado.Acontece DOS ignorado extensões para dispositivos de modo que
con.h
era exatamente o mesmo quecon
, o console de entrada (o que significa, é claro, o compilador estava esperando por mim para digitar o arquivo de cabeçalho antes que ele iria continuar).fonte
POSIX "Fully portable filenames"
entrada, que lista estes:A–Z a–z 0–9 . _ -
OK, então veja Comparação de sistemas de arquivos se você se importa apenas com os principais sistemas de arquivos dos players:
NUL
,\
,/
,:
,*
,"
,<
,>
,|
. Além disso, nenhum caractere de espaço no início ou no final e nenhum ponto no final .:
ou/
NUL
ou/
portanto, qualquer byte, exceto
NUL
,\
,/
,:
,*
,"
,<
,>
,|
e você não pode ter arquivos / pastas chamar.
ou..
e sem caracteres de controle (é claro).fonte
/
. O Windows não permite barra invertida e algumas strings (por exemploCON
).:
s em seus nomes.No sistema operacional Windows, crie um arquivo e atribua um caractere inválido, como
\
no nome do arquivo. Como resultado, você receberá um pop-up com todos os caracteres inválidos em um nome de arquivo.fonte
Para ser mais preciso sobre o Mac OS X (agora chamado MacOS)
/
no Finder, é interpretado como:
no sistema de arquivos Unix.Isso foi feito para compatibilidade com versões anteriores quando a Apple saiu do Classic Mac OS.
É legítimo usar a
/
em um nome de arquivo no Finder, olhando para o mesmo arquivo no terminal em que ele será exibido.:
.E funciona de maneira inversa: você não pode usar a
/
em um nome de arquivo com o terminal, mas a:
está OK e aparecerá como/
no Finder.Alguns aplicativos podem ser mais restritivos e proibir os dois caracteres para evitar confusão ou porque mantiveram a lógica do Mac OS Classic anterior ou para compatibilidade de nomes entre plataformas.
fonte
Para nomes de arquivos "localidade em inglês", isso funciona muito bem. Estou usando isso para limpar os nomes de arquivos enviados. O nome do arquivo não deve estar vinculado a nada no disco, é para quando o arquivo estiver sendo baixado, portanto, não há verificação de caminho.
Basicamente, remove todos os caracteres não imprimíveis e reservados para Windows e outros sistemas operacionais. Você pode estender
facilmenteo padrão para suportar outros códigos de idioma e funcionalidades.fonte
Aqui está o código para limpar o nome do arquivo em python.
fonte
:return: a valid name for Win/Mac/Linux
não é verdade em todas as circunstâncias.