2013-09-28 19 views
11

Python komut dosyasında dizin yolunu kullanarak çok temel bir sorunla karşılaşıyorum. Windows Gezgini'nden yol kopyaladığımda, yol ayırıcı olarak geriye doğru eğik çizgi kullanır ve bu da soruna neden olur. Python windows yolu eğik çizgisi

>>> 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 

Bazı biri bu sorunu gidermek için yardım edebilir.

+0

İleri eğimler tüm işletim sistemlerinde anlaşılır - ancak 'normpath 'pencerelerinde' \\ 'kullanılır. Yolları birleştirmek/yönetmek için 'yol' yöntemlerini kullanmanın en kolay yolunu şahsen bulurum ve daha sonra sistemler arasında tutarlı olmak için nihayetinde \\ 'den'/'ye bir değişiklik yapar. Bunun Q'nuza cevap verip vermediğinden emin değil misiniz? – Basic

+4

Bu dizeden önce r ekleyebiliriz, örneğin x = r'D: \ testfolder ', ve x "D: \ testfolder" olur. Bir dizeden önce bir 'r' eklendiğinde bu dizenin bir ham dizesi olduğunu gösterir. – Mark

cevap

12

Python bir sekme karakteri olarak bir dizede bir \t yorumlamaktadır; Bu nedenle, "D:\testfolder", fark ettiğiniz gibi : ve e arasındaki bir sekmeyle yazdırılır. Eğer gerçek bir ters eğik çizgi istiyorsanız, \\ olarak girerek kaçış ters eğik çizgi gerekir:

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

Ancak, çapraz platform uyumluluğu için, muhtemelen os.path.join kullanmalıdır. Windows üzerinde Python'un eğik çizgileri (/) düzgün bir şekilde otomatik olarak işleyeceğini düşünüyorum.

+7

Sadece eğik çizgiler kullanmak pencerelerin altında çalışacaktır - 'os.path.join()' açıkçası en güçlü çözümdür. –

+9

Alternatif olarak, bir "r" harfi önek ekleyerek bir [ham dize değişmezi] (http://docs.python.org/2/reference/lexical_analysis.html#string-literals) kullanabilirsiniz, böylece çıkış dizileri yorumlanamaz, örn. 'R "D: \ testfolder"'. –

+2

@AdamRosenfield Ham dizgiler, windows yolu için uygun değildir. https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslashes-in-windows-filenames/ –