Python path.existe () devolver o falso

estou a construir um servidor de ficheiros básico e o meu programa não consegue encontrar ficheiros.

def sendfile(sock, myfile):
    print 'Serving file:', myfile
    print 'File exists?:', os.path.exists(myfile)

    path = os.path.normpath(os.path.join(os.getcwd(), myfile))
    print 'Serving file:', path
    print 'File exists?:', os.path.exists(path)

estes devolvem sempre falso, mesmo que o 'myfile' e' path ' estejam correctos [o ficheiro está no mesmo directório que o programa do servidor].

ocioso funciona bem, mas sem passar para funções.

>>> print os.path.exists("/user/server/foo.txt")  
True
O que é que eu perdi?

[editar:] resultado:

Serving file: foo.txt

File exists?: False
Serving file: /user/server/foo.txt

File exists?: False
 10
Author: schroeder, 2012-09-27

3 answers

Tenho quase 100% de certeza que não estás a limpar a tua entrada antes de verificares se o caminho existe. Aqui está uma coisa que eu corri no meu intérprete:
>>> from os.path import exists
>>> exists('dog.png')
True
>>> exists('dog.png\n')
False

Tente remover espaços em branco em path Antes de verificar se existe.

 13
Author: Thane Brimhall, 2012-09-26 20:30:42
Isto pode não responder directamente à sua pergunta, mas pode optar pelo método "tentar / excepto".: Qualquer função que use o arquivo deve retornar uma exceção se o arquivo não existir (especialmente se for uma função incorporada), e você pode agir de acordo. Então você não tem necessidade de verificar se o arquivo existe ou não. Perigoso? Talvez, mas isso depende do que está realmente a tentar fazer.
 2
Author: Pierre-Francoys Brousseau, 2012-09-26 20:23:45

Se ler a documentação em Python de os.caminho.existe () , diz que existem casos específicos em que existe um ficheiro ou pasta mas os.caminho.exists () devolve falso:

Devolve verdadeiro se a localização se referir a uma localização existente ou a um ficheiro aberto descritor. Devolve falso para as ligações simbólicas quebradas. Em alguns plataformas, esta função pode retornar falso se a permissão não for concedida para executar os.stat () no ficheiro pedido, mesmo que a localização fisicamente existir.

 2
Author: mostafa.elhoushi, 2017-09-08 23:13:39