Pergunta sobre windows, python – Como posso criar arquivos no Windows com barras incorporadas usando Python?

4

Depois de meia hora pesquisando no Google, estou surpreso por não conseguir encontrar uma maneira de criar um arquivo no Windows com barras no nome. O cliente exige que os nomes dos arquivos tenham a seguinte estrutura:

28/04/2012 04:07 PM 6,781 12Q1_C125_G_04-17.pdf

Até agora não encontrei nenhuma maneira de codificar as barras para que elas se tornassem parte do nome do arquivo em vez do caminho.

Alguma sugestão?

Você poderia dar um resumo do que você já experimentou até agora, por isso não recauchutamos? Silas Ray

Sua resposta

3   a resposta
13

A barra é um dos caracteres que não podem ser usados ​​nos nomes de arquivos do Windows, consultehttp://msdn.microsoft.com/pt-br/library/windows/desktop/aa365247(v=vs.85).aspx

As seguintes regras fundamentais permitem que os aplicativos criem e processem nomes válidos para arquivos e diretórios, independentemente do sistema de arquivos:

Use um período para separar o nome do arquivo base da extensão no nome de um diretório ou arquivo.

Use uma barra invertida (\) para separar os componentes de um caminho. A barra invertida divide o nome do arquivo do caminho para ele e um nome de diretório de outro nome de diretório em um caminho. Você não pode usar uma barra invertida no nome do arquivo ou diretório real, porque é um caractere reservado que separa os nomes em componentes.

Use uma barra invertida conforme necessário como parte dos nomes de volume, por exemplo, o "C: \" em "C: \ caminho \ arquivo" ou o "\ servidor \ compartilhamento" em "\ servidor \ compartilhamento \ caminho \ arquivo" para a Universal Nomes de Convenção de Nomenclatura (UNC). Para obter mais informações sobre nomes UNC, consulte a seção Limitação de tamanho máximo do caminho.

Não assuma a sensibilidade a maiúsculas e minúsculas. Por exemplo, considere que os nomes OSCAR, Oscar e oscar sejam os mesmos, embora alguns sistemas de arquivos (como um sistema de arquivos compatível com POSIX) possam considerá-los diferentes. Observe que o NTFS suporta a semântica POSIX para a diferenciação de maiúsculas e minúsculas, mas esse não é o comportamento padrão. Para mais informações, consulte CreateFile.

Designadores de volume (letras de unidade) são similarmente insensíveis a maiúsculas e minúsculas. Por exemplo, "D: \" e "d: \" referem-se ao mesmo volume.

Use qualquer caractere na página de código atual para um nome, incluindo caracteres Unicode e caracteres no conjunto de caracteres estendidos (128 a 255), exceto pelo seguinte:

    The following reserved characters:
        < (less than)
        > (greater than)
        : (colon)
        " (double quote)
        / (forward slash)
        \ (backslash)
        | (vertical bar or pipe)
        ? (question mark)
        * (asterisk)

Valor inteiro zero, por vezes referido como o caractere ASCII NUL.

Caracteres cujas representações inteiras estão no intervalo de 1 a 31, exceto para fluxos de dados alternativos em que esses caracteres são permitidos. Para obter mais informações sobre fluxos de arquivos, consulte Fluxos de arquivos.

Qualquer outro caractere que o sistema de arquivos de destino não permite.

... funciona até que alguém mova esse arquivo para uma máquina FAT32 que usa a página de código OEM para nomes de arquivos e coisas explodem ... bgporter
@ sr2222 certeza. mas os clientes conseguem o que os clientes querem. 1ª regra de freelancer. e ei, issotrabalho. ch3ka
Eu sugiro que você sugira ao seu cliente que você use traços como o delimitador de data. Silas Ray
ou Unicode Character 'DIVISION SLASH' (U + 2215) ch3ka
7

vos com barras neles. Mesmo se fosse possível de alguma forma, fazendo deepshit magic, provavelmente vai estragar quase todos os aplicativos, incluindo o Windows Explorer.

você poderia abusar dos recursos unicode do Windows, no entanto.

Criando um arquivo com (isso não é uma barra, é "barra de divisão", vejahttp://www.fileformat.info/info/unicode/char/2215/index.htm ) em seu nome funciona muito bem, por exemplo.

bem ... eu sou um hacker;) ch3ka
Obras para o OSX também John
Pensamento criativo. Junuxx

Perguntas relacionadas