2017-06-21 43 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')