2015-04-25 13 views
5

Z jakiegoś powodu os.path.isfile() czasami zwraca false dla niektórych istniejących plików systemu Windows. Najpierw założyłem, że spacje w nazwie pliku powodują problem, ale inne ścieżki plików ze spacjami działały dobrze. Oto kopia z konsoli Python, która ilustruje ten problem:os.path.isfile() zwraca wartość false dla istniejącego pliku Windows

>>> import os 
>>> os.path.isfile("C:\Program Files\Internet Explorer\images\bing.ico") 
False 
>>> os.path.isfile("C:\Program Files\Internet Explorer\images\PinnedSiteLogo.contrast-black_scale-80.png") 
True 

Jak mogę rozwiązać ten problem?

Odpowiedz

9

\b w ciąg oznacza backspace. Jeśli chcesz uzyskać rzeczywiste ukośniki odwrotne w ciągu znaków, muszą one zostać zastąpione większą liczbą ukośników odwrotnych (\\ zamiast \) lub musisz użyć nieprzetworzonego ciągu (r"..." zamiast "..."). W przypadku ścieżek plików zalecam używanie ukośników w przód.

+0

następujące utwory: '>>> os.path.isfile (R "C: Program Files \ \ Internet Explorer \ images \ bing.ico") true' Jednak ścieżka jest w zmienna i nie mogę używać r ze zmiennymi. –

+0

@NemoXXX Powinno być prawdziwe. Jest równe 'C: \\ Program Files \\ Internet Explorer \\ images \\ bing.ico' – skyline75489

+0

@ skyline75489: ścieżka z prefiksem r zwraca true, ale potrzebuję funkcji, ponieważ ścieżka jest zmienną i' os.path.normpath() 'zwraca' 'C: \\ Program Files \\ Internet Explorer \\ images \ x08ing.ico'' który nie działa, ponieważ mała litera b to \ xAA. –

Powiązane problemy