web-dev-qa-db-ja.com

python(エスケープしない)でバックスラッシュを使用する

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

私は出力が欲しい:

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

バックスラッシュを文字列として機能させたくない、つまりエスケープしたり特別なことをしたくないしかし、エラーが発生します

無効な\ xエスケープ

「\」をエスケープではなく「\」として使用するにはどうすればよいですか?

23
esafwan

質問に直接答えるには、文字列の前に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')

(バックスラッシュは改行をエスケープしていますが、必要に応じてすべてを1行に入れることもできます)

ファイルパスでスラッシュを使用でき、Pythonは必要に応じてそれらを正しいセパレーター(Windowsではバックスラッシュ)に自動的に変換します。

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

動作するはずです。ただし、os.path.joinを使用することをお勧めします。これにより、何をしようとしているかが明確になります。

32
David Z

スラッシュをエスケープできます。使用する \\スラッシュを1つだけ取得します。

23
avacariu