2013-09-28 9 views
11

Sono di fronte a un problema molto basilare che utilizza il percorso di directory nello script python. Quando faccio copiare il percorso da Windows Explorer, utilizza la barra rovesciata come separatore di percorso che causa problemi.slash del percorso di Windows Python

>>> x 
'D:\testfolder' 
>>> print x 
D:  estfolder 
>>> print os.path.normpath(x) 
D:  estfolder 
>>> print os.path.abspath(x) 
D:\  estfolder 
>>> print x.replace('\\','/') 
D:  estfolder 

Qualcuno può aiutarmi a risolvere questo problema.

+0

Le barre in avanti sono comprese in tutti i sistemi operativi, ma 'normpath' su windows utilizza' \\ '. Personalmente trovo più facile usare i metodi 'path' per combinare/gestire i percorsi e infine fare una sostituzione da' \\ 'a'/'per essere coerenti tra i sistemi. Non sei sicuro che questo risponda alla tua Q? – Basic

+4

potresti aggiungere un r prima di questa stringa, ad esempio, x = r'D: \ testfolder ', e x sarebbe "D: \ testfolder". aggiungendo una "r" prima che una stringa mostri che questa stringa è una stringa non elaborata. – Mark

risposta

12

Python interpreta uno \t in una stringa come carattere di tabulazione; quindi, "D:\testfolder" verrà stampato con una scheda tra : e e, come hai notato. Se si desidera un backslash reale, è necessario fuga il backslash digitando le \\:

>>> x = "D:\\testfolder" 
>>> print x 
D:\testfolder 

Tuttavia, per la compatibilità cross-platform, probabilmente si dovrebbe usare os.path.join. Penso che Python su Windows gestirà automaticamente anche le barre (/).

+7

L'uso delle barre in avanti funziona sotto windows: 'os.path.join()' è ovviamente la soluzione più potente. –

+9

In alternativa, è possibile utilizzare un [grezzo letterale stringa] (http://docs.python.org/2/reference/lexical_analysis.html#string-literals) facendo precedere un 'r' in modo che le sequenze di escape non vengano interpretate, ad es. 'R "D: \ TestFolder"'. –

+2

@AdamRosenfield Le stringhe non sono adatte per il percorso di Windows. https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslashes-in-windows-filenames/ –

Problemi correlati