2016-03-21 13 views
0

Ich prüfe die os.path.isfile (Pfad) -Methode, um zu sehen, ob etwas eine Datei ist oder nicht. Seltsamerweise finde ich, dass, wenn ich den Pfad und den Dateinamen eintrage, true zurückgibt, aber wenn ich den vollständigen Dateipfad einstelle, wird false zurückgegeben. Warum ist das?Python 2.7 os.path.isfile

import os 

path = 'C:\Users\usrname\Documents\test.xlsx' 

if os.path.isfile(os.path.join('C:\Users\usrname\Documents','test.xlsx')): #returns yes 
    print 'yes' 
else: 
    print 'no' 

if os.path.isfile(path): #returns no 
    print 'yes' 
else: 
    print 'no' 

Python 2.7 auf Win 7 ipython Notebook

+0

die Ausgabe von os.path.join überprüfen ('C: \ Benutzer \ usrname \ Dokumente', 'test.xlsx') – kingdaemon

Antwort

3

Sein, weil die \t im Pfad ein Tab-Zeichen, kein zwei Zeichenstrich-t. Verwenden Sie rohe Zeichenfolgen.

path = r'C:\Users\usrname\Documents\test.xlsx' 

oder der Flucht der Separator

path = 'C:\\Users\\usrname\\Documents\\test.xlsx' 
+0

es Ihnen danken! Ich hoffe, das hilft jemand anderem. – Mateyobi

0

Da os.path.join konvertieren Sie Pfad String Pfad zu korrigieren:

‚C: \\ Users \\ usrname \\ Dokumente \\ test.xlsx '

2

Ihre \t wird in eine Registerkarte umgewandelt.

import os 
path = 'C:\Users\usrname\Documents\test.xlsx' 
print path 

# C:\Users\usrname\Documents est.xlsx 

path = os.path.join('C:\Users\usrname\Documents', 'test.xlsx') 
print path 

# C:\Users\usrname\Documents\test.xlsx 

Um das Problem der Escape-Zeichen ganz zu vermeiden, würde ich völlig os.path.join mit nur den Aufbau der Saite vor.

base_dir = os.path.join('C:', 'Users', 'usrname', 'Documents') 
print base_dir 

# C:\Users\usrname\Documents 

path = os.path.join(base_dir, 'test.xlsx') 
print path 

# C:\Users\usrname\Documents\test.xlsx