Замена двойного бэкслэша в пути файла в переменной Python
получил путь в переменную
nfile = event.src_path
Путь получися вида 'C:\\Work\\export\\121.txt'
Нужно заменить \\ на \
nfile = nfile.replace('\\','\') не помогло.
ОС - Windows10
Пока заработало через такой код:
path = r"C:\work\export\\"
nfile = event.src_path
fname = str(nfile).split('\\')[-1:][0]
fullname = path + fname
with open(fullname) as file:
rline = file.read()
Но мне кажется это через ... Подскажите как правильнее оформить данный момент
Ответы (2 шт):
Не знаю что у тебя не получилось.

OC - xubuntu
IDLE - PyCharm PythonConsole
python - 3.7
nfile.replace('\\', '/')
Не нужно ничего менять: каждый удвоенный обратный слеш внутри кавычек - это по факту один символ. Убедиться в этом можно, если вывести строку через print:
print('C:\\Work\\export\\121.txt') # Выведет C:\Work\export\121.txt
Удвоение внутри строк нужно из-за того, что некоторые сочетания со слешем внутри строки имеют специальное значение, например '\n' (перенос строки), '\r' ("возврат каретки", т.е. сдвиг курсора на начало строки), '\b' ("забой", он же backspace - сдвиг курсора на один символ влево) и т.д. Чтобы отличить, например, два отдельных символа - обратный слеш и букву n, от одного символа переноса строки нужно удвоить обратный слеш, т.е. '\n' - один символ, а '\\n' - два символа.
Если использовать r-строки, то удваивать обратный слеш внутри кавычек не нужно. Фактически две строки ниже равны между собой:
>>> 'C:\\Work\\export\\121.txt' == r'C:\Work\export\121.txt'
True