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')

(改行はエスケープされますが、必要に応じてすべてを1行にまとめることができます)

ファイルパスでスラッシュを使用できることを説明します。Pythonは必要に応じてそれらを正しい区切り文字(Windowsではバックスラッシュ)に自動的に変換します。それで

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

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

于 2010-08-01T02:22:03.117 に答える
28

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

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

Another simple (and arguably more readable) approach is using string raw format and replacements like so:

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

or using the os path method (and a microfunction for readability):

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 に答える