использование обратной косой черты в python (не для выхода)

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

Я хочу, чтобы вывод:

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

Я не хочу, чтобы обратная косая черта работала как строка, я имею в виду, что я не хочу, чтобы она убегала или делала что-то особенное. Но я получаю сообщение об ошибке

Неверный выход \x

Как я могу использовать '\' как '\', а не escape?


person esafwan    schedule 01.08.2010    source источник


Ответы (4)


Чтобы ответить на ваш вопрос напрямую, поставьте 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, потому что это дает понять, что вы пытаетесь сделать.

person David Z    schedule 01.08.2010
comment
Python не преобразует / в `, rather /` является допустимым разделителем пути в Windows. - person David Heffernan; 11.05.2015
comment
Обратите внимание, что Windows также может использовать прямую косую черту вместо обратной косой черты в целом; Python не нужно их конвертировать. - person MilkyWay90; 05.11.2018

Вы можете избежать косой черты. Используйте \\, и вы получите только одну косую черту.

person avacariu    schedule 01.08.2010

Вы можете экранировать обратную косую черту другой обратной косой чертой (\\), но это не будет выглядеть лучше. Чтобы решить эту проблему, поставьте r перед строкой, чтобы обозначить необработанную строку. Необработанная строка будет игнорировать буквально все , что плохо, если вы также хотите цветной текст, и очень плохо, если ваша строка содержит кавычки. как это:

a_and_b = r”Alice’s friend is Bob. He always says, \“howdy\” ”

В этом случае python выдаст SyntaxError...


Если вы не поняли, как это решить, вот оно:

a_and_b = r”””Alice’s friend is Bob. He always says, \“howdy\” ””” Здесь мы используем многострочную строку. А если в строке 3 кавычки подряд, то это просто. Поместите пробел между ними, и это решено:

three_quotes = ’’’ Here are 3 single quotes: ‘ ‘ ‘ ’’’

person Einsteinium    schedule 30.10.2020

Другой простой (и, возможно, более читабельный) подход — это использование необработанного строкового формата и таких замен:

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)
person Chris Rudd    schedule 16.03.2021