2010-06-01 16 views
50

Jaki jest najlepszy sposób reprezentowania katalogu Windows, na przykład "C: \ siatki \ jak"? Próbowałem zmodyfikować skrypt, ale nigdy nie działa, ponieważ nie mogę poprawnie odczytać katalogu, zakładam, że "\" działa jako znak ucieczki?Ścieżka Windows w pytonie

Odpowiedz

89

można używać zawsze:

'C:/mydir' 

Działa to zarówno w Linux i Windows. Inne posibility jest

'C:\\mydir' 

jeśli masz problemy z niektórymi nazwami można także spróbować surowe ciągi:

r'C:\mydir' 

jednak najlepszym rozwiązaniem jest korzystanie z funkcji modułu os.path że zawsze wybrać poprawną konfigurację dla OS:

os.path.join(mydir, myfile) 
+0

Dzięki chłopaki, "/" działało dobrze, ale inne wskazówki są doceniane. – Gareth

+2

@Gareth, jestem bardzo leniwy i często znalazłem się za pomocą "/". Jednak na dłuższą metę korzystanie z os.path jest wygodniejsze. Pozwala także na używanie mydir i myfile jako zmiennych, które można łatwo modyfikować. – joaquin

+7

Jedyną rzeczą, na którą należy uważać na surowych ciągach, jest to, że nie mogą kończyć się \ –

13

Użyj modułu os.path.

os.path.join("C:", "meshes", "as") 

lub użyj surowe ciągi

r"C:\meshes\as" 
+6

os.path.join nie może zachowywać się jak można się spodziewać, gdy składnik jest literą dysku, ponieważ ścieżki względne są dozwolone nawet th en. (Wynik pierwszego wiersza to "C: mesh \\ as" w Windows.) –

+0

@ komentarz dash-tom-bang jest naprawdę ważny. Czy jest to właściwe, aby umieścić "C: \" "jako pierwszy wpis? Czy to marnuje trochę czystości używania 'join'? –

+1

@ JackO'Connor to właśnie robię. Na pewno nie chcesz wstawiać "C: \" w środku nazwy pliku. Poza tym możesz użyć 'os.path.normpath' przed lub po złączeniu, aby upewnić się, że ścieżka zostanie ładnie wydrukowana. – Agostino