34
import os
path= os.getcwd()
final= path +'\xulrunner.exe ' + path + '\application.ini'
print final

我想要输出:

c:\python25\xulrunner.exe c:\python25\application.ini

我不希望反斜杠作为字符串工作,我的意思是不希望它转义或做任何特别的事情。但我得到一个错误

无效的 \x 转义

我如何使用 '\' 作为 '\' 而不是转义?

4

4 回答 4

43

要直接回答您的问题,请放在r字符串前面。

final= path + r'\xulrunner.exe ' + path + r'\application.ini'

但更好的解决方案是os.path.join

final = os.path.join(path, 'xulrunner.exe') + ' ' + \
         os.path.join(path, 'application.ini')

(那里的反斜杠转义了一个换行符,但如果你愿意,你可以把整个东西放在一行上)

我会提到您可以在文件路径中使用正斜杠,Python 会根据需要自动将它们转换为正确的分隔符(Windows 上的反斜杠)。所以

final = path + '/xulrunner.exe ' + path + '/application.ini'

应该管用。但它仍然更可取,os.path.join因为这样可以清楚地说明您要做什么。

于 2010-08-01T02:22:03.117 回答
28

你可以逃脱斜线。使用\\,你只会得到一个斜线。

于 2010-08-01T05:22:32.303 回答
1
于 2020-10-30T22:42:22.710 回答
1

另一种简单(并且可以说更具可读性)的方法是使用字符串原始格式和替换,如下所示:

import os
path = os.getcwd()
final = r"{0}\xulrunner.exe {0}\application.ini".format(path)
print(final)

或使用 os path 方法(以及可读性的微函数):

import os

def add_cwd(path):
    return os.path.join( os.getcwd(), path )

xulrunner = add_cwd("xulrunner.exe")
inifile = add_cwd("application.ini")
# in production you would use xulrunner+" "+inifile
# but the purpose of this example is to show a version where you could use any character
# including backslash
final = r"{} {}".format( xulrunner, inifile )
print(final)
于 2021-03-16T21:27:48.437 回答