2016-01-13 78 views
1

我需要连接特定的文件夹路径用字符串,例如:EOL而串联串+路径

了mystring = “blablabla”
路径= “C:\文件夹\任何\”

印刷(路径+ MyString的)应该返回: C:\文件夹\什么\ blablabla

不过,我总是得到EOL错误,这是一个必须的路径有斜杠是这样的:\,而不是像这样:/

请告诉我方式,我尝试了r'它不工作,我试图添加双“”,没有任何工作,我无法弄清楚。

+0

不要用反斜杠结束路径。如果你使用'os.path.join',你永远不需要。 – ShadowRanger

回答

1

无论是使用转义字符\\\

mystring = "blablabla" 
path = "C:\\folder\\whatever\\" 

conc = path + mystring 
print(conc) 
# C:\folder\whatever\blablabla 

或者,利用原始字符串的,但是从path结束的最后一个反斜杠移动的myString开始:

mystring = r"\blablabla" 
path = r"C:\folder\whatever" 

conc = path + mystring 
print(conc) 
# C:\folder\whatever\blablabla 

的原因是你自己的原始字符串方法不起作用,原始字符串可能不会以单个反斜杠结尾:

具体而言,原始文字不能以单个反斜杠结尾(因为 反斜杠会转义下面的引号字符)。

+0

谢谢你,真的帮助了我! –

2

始终使用os.path.join()加入路径和r前缀允许单个反斜杠作为Windows路径分隔符:

r"C:\folder\whatever"

现在,现在需要反斜杠:

>>> import os 
>>> mystring = "blablabla" 
>>> path = r"C:\folder\whatever" 
>>> os.path.join(path, mystring) 
'C:\\folder\\whatever\\blablabla' 
+0

非常感谢您解释! –

1

两件事。首先,关于EOL错误,我最好的猜测 - 没有访问实际的python会话 - 是python抱怨,因为你有一个未终止的字符串,由于最后的"字符被转义,这将会发生,即使该字符串的前缀为r。我的意见是,你应该删除前缀,并正确地将所有反斜杠都像这样:\\

在你的榜样,path然后变成path = "C:\\folder\\whatever\\"

其次,代替人工拼接的路径,你应该使用os.path.join

import os 
mystring = "blablabla" 
path = "C:\\folder\\whatever" 
print os.path.join(path, mystring) 

## prints C:\\folder\\whatever\\blablabla 

注意os.path将使用路径convetions操作系统在运行应用程序的地方,所以如果你在Linux上运行它,上面的代码会产生错误的/意想不到的结果。查看我已链接的页面顶部的注释以获取详细信息。