2010-06-01 12 views
50

Qual è il modo migliore per rappresentare una directory di Windows, ad esempio "C: \ meshes \ as"? Ho cercato di modificare uno script ma non funziona mai perché non riesco a ottenere la directory giusta, presumo a causa del fatto che '\' funge da carattere di escape?Percorso di Windows in python

risposta

89

è possibile utilizzare sempre:

'C:/mydir' 

questo funziona sia in Linux e Windows. Altra possibilita 'è

'C:\\mydir' 

se avete problemi con alcuni nomi si può anche provare stringhe prime:

r'C:\mydir' 

tuttavia le migliori prassi è quella di utilizzare le funzioni del modulo os.path che selezionano sempre la configurazione corretta per il vostro OS:

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

Grazie ragazzi, '/' ha funzionato bene, ma gli altri suggerimenti sono apprezzati. – Gareth

+2

@Gareth, sono molto pigro e spesso mi sono trovato a usare '/'. Tuttavia a lungo termine l'uso di os.path è più conveniente. Permette anche di usare mydir e myfile come variabili che puoi facilmente modificare. – joaquin

+7

L'unica cosa da fare attenzione con le stringhe non elaborate è che non possono finire con \ –

13

Utilizzare il modulo os.path.

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

o utilizzare stringhe prime

r"C:\meshes\as" 
+6

os.path.join potrebbe non funzionare come previsto quando un componente è una lettera di unità, poiché i percorsi relativi sono consentiti anche it. (Il risultato della prima riga è 'C: meshes \\ come' su Windows.) –

+0

Il commento di @ dash-tom-bang è molto importante. È la cosa giusta da fare per mettere '" C: \ "' come prima voce? Questo rovina un po 'di pulizia dell'uso di 'join'? –

+1

@ JackO'Connor è quello che faccio. Certamente non vuoi mettere '" C: \ "' nel mezzo del nome del file. Inoltre, puoi usare 'os.path.normpath' prima o dopo un join, per assicurarti che il percorso venga stampato bene. – Agostino

Problemi correlati