连接字符串 + 路径时停产

EOL while concatenating string + path

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

mystring = "blablabla"
路径 = "C:\folder\whatever\"

打印(路径 + mystring)应该 return: C:\folder\whatever\blablabla

但是我总是遇到 EOL 错误,并且必须是这样的斜线路径:\ 而不是这样:/

请告诉我方法,我用 r' 试过它不起作用,我试过添加双“”,没有任何效果,我无法弄清楚。

要么对 \ 使用转义字符 \:

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

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

Specifically, a raw literal cannot end in a single backslash (since the backslash would escape the following quote character).

来自

始终使用 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'

两件事。

首先,关于 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 将使用应用程序 运行ning 所在操作系统的路径转换,因此上述代码将生成 erroneous/unexpected 结果,如果你 运行 它打开,比方说,Linux。查看我链接的页面顶部的注释以获取详细信息。