Como evitar aspas simples no nome do arquivo durante o arquivo de salvamento do python?

2

Se o Python salvar o arquivo na partição estendida 4 (Linux) que contenha símbolo incomum (até agora colchetes descobertos []). Ele cita automaticamente o nome do arquivo.

Por exemplo:

file[].txt

será salvo como

'file[].txt'

No Linux, a partição 4 expandida "file []. txt" é um nome de arquivo válido.

Por que isso está acontecendo e pode ser evitado? Eu posso criar uma solução, removendo o primeiro e último símbolo do nome do arquivo, mas planejo executar meu aplicativo em várias plataformas. Então eu prefiro beliscar isso no começo.

O Python3 é usado na plataforma AMD64 do Linux Gentoo com a partição ext4.

código python:

    print('\ndebug:triggered sf mode, name of file below \n')
    clientsocket, addr = serversocket.accept()
    filename = clientsocket.recv(10240)
    filename = filename.decode('UTF-8')
    app_output(filename)
    mode = 'valid'
    clientsocket.close()

    clientsocket, addr = serversocket.accept()
    incmdata = '1'
    somefile = open(filename, 'w+')
    somefile.close()
    while len(incmdata) !=0:
        incmdata = clientsocket.recv(1024 * 8)
        print('this is filename: ', filename)
        somefile=open(filename, 'ab')
        somefile.write(incmdata)
        somefile.close()
    app_output('file supposedly recieved')

a variável filename é algo que o cliente envia para o miniserver (na verdade, o cliente captura a variável posicional)

esta é a saída:

file[].txt
this is filename:  file[].txt
this is filename:  file[].txt

também, parte relevante de

ls -lah

-rw-r--r--  1 dimko dimko        269 Sep 11 10:00  file_open.txt
-rw-r--r--  1 dimko dimko         93 Sep 11 09:05  file_open.txt~
-rw-r--r--  1 dimko dimko          5 Sep 14 11:24 'file[].txt'
drwxr-xr-x  3 dimko dimko       4096 Sep 14 11:21  .idea
-rw-r--r--  1 dimko dimko       7635 Sep 14 11:20  LanSwissKnife.py
    
por user57766 14.09.2018 / 11:59

3 respostas

3

O fato de o nome do arquivo entre aspas ainda estar alinhado com os outros nomes de arquivos na sua saída ls -lah me faz pensar que as aspas provavelmente foram adicionadas pelo comando ls e não são uma parte real do nome do arquivo. O objetivo é provavelmente indicar "este nome de arquivo precisa ser citado na linha de comando, ou então coisas inesperadas podem acontecer".

Tente criar um nome de arquivo semelhante na linha de comando e veja o que acontece:

touch /tmp/file\[\].txt
ls -lah /tmp
    
por 14.09.2018 / 13:12
2

O nome do arquivo real é:

file[].txt

Seu programa python não está com defeito aqui. As citações são feitas por ls .

Eu consegui reproduzi-lo usando:

ls -lah --quoting-style=shell

mas quando escolho literal como um estilo de citação:

ls -lah --quoting-style=literal

, os arquivos com [ ou ] são listados sem aspas. Observe que você ls pode ter argumentos padrão diferentes em sistemas diferentes.

    
por 14.09.2018 / 13:22
0

As últimas duas respostas estavam corretas.

Eu olhei para fonte original do nome do arquivo no navegador de arquivos GUI, não há problema lá. Isso só acontece se o utilitário 'ls' for usado. Então, nunca houve problema de python, mas a peculiaridade do utilitário 'ls'.

Em outras palavras, o comando 'ls' adicionou aspas simples por qualquer motivo. O arquivo original também possui aspas no utilitário 'ls'.

Obrigado a todos pela participação.

    
por 15.09.2018 / 17:16

Tags