How can I put an actual backslash in a string literal (not use it for an escape sequence)?

backslash, escaping, python, rawstring, string

Solution

To answer your question directly, put `r` in front of the string.

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

But a better solution would be `os.path.join`:

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

(the backslash there is escaping a newline, but you could put the whole thing on one line if you want)

I will mention that you can use forward slashes in file paths, and Python will automatically convert them to the correct separator (backslash on Windows) as necessary. So

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

should work. But it's still preferable to use `os.path.join` because that makes it clear what you're trying to do.

Problem

I have this code: ``` import os path = os.getcwd() final = path +'\xulrunner.exe ' + path + '\application.ini' print(final) ``` I want output like: ``` C:\Users\me\xulrunner.exe C:\Users\me\application.ini ``` But instead I get an error that looks like: ``` SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape ``` I don't want the backslashes to be interpreted as escape sequences, but as literal backslashes. How can I do it? Note that if the string should only contain a backslash - more generally, should have an odd number of backslashes at the end - then raw strings cannot be used. Please use How can I get a string with a single backslash in it? to close questions that are asking for a string with just a backslash in it. Use How to write string literals in python without having to escape them? when the question is specifically about wanting to avoid the need for escape sequences.

Original source

Related problems