2017-06-21 62 views
2

我希望得到一個路徑位置中使用os.join.path如何添加\字符串與Python

我嘗試這些方法

import os 
a = 'BIWDB02' 
b = 'e$\research' 
c = '\\\\' 
print c 
    # \\ 

'\\ BIWDB02 \ E $ \研究'嘗試-1:

x = os.path.join('\\','\\',a,b) 
print x 

輸出:

\BIWDB02\e$ 
    esearch 

不知道它爲什麼會出現在下一行,甚至'r'丟失。

TRY-2,3

y = os.path.join('\\\\',a,b) 
print y 

z= os.path.join(c,a,b) 
print z 

錯誤:

IndexError: string index out of range

更新:

os.path.join('\\\\\\',a,b) 
#\\\BIWDB02\e$\research 

與6 - \\\它給了我3 - \但是與4 - \\它再次給我indexError。

+0

\ r是一個回車符;它會告訴你的終端仿真器在行首 – depperm

+1

處定義'b'作爲'b = r'e $ \ research'',然後執行'os.path.join(a,b)'。它應該是足夠的 –

+1

請參閱[這個問題](https://stackoverflow.com/questions/2081640/what-exactly-do-u-and-r-string-flags-do-in-python-and-what-are -raw-string-l)獲取更多關於原始字符串文字的細節。 –

回答

5

該問題來自e$\research中的\r\r被認爲是 carriage return並執行返回換行符。

添加re$\research,使之成爲raw string literals

import os 
a = 'BIWDB02' 
b = r'e$\research' 
c = '\\\\' 
x = os.path.join(c, a, b) 
print x 

>>> \\BIWDB02\e$\research 
+0

謝謝..但是我需要\\在字符串開頭 –

+0

@BHappyBhaarsham我更新了我的答案。我注意到在你的更新中,你說\\\\給你一個'IndexError'。你運行的是哪個版本的Python?我在2.7和3.5版本測試了我的更新,但沒有收到錯誤消息 – Wondercricket

0

您不必手動逃脫你的路徑名。您可以將它們作爲Python 2.x中的原始字符串進行強制轉換,如下所示:

"Path with lots of tricky characte\rs.\n..durr".encode('string-escape')