Найти - Пользователи
Полная версия: Нормализовать путь
Начало » Python для новичков » Нормализовать путь
1
ivanzzz
В параметре при запуске передаю путь к файлу
'C:\Qt\1.txt'
, но там 1 “\”, делаю os.path.normpath , но он возвращает
'C:\\Qt\x01.txt'
. Из за чего это может быть?
py.user.next
r'C:\Qt\1.txt'
ivanzzz
Я передаю как параметр при запуске скрипта через консоль, сырые стоки не спасут. Или как-то можно в сырую строку превратить?
JOHN_16
ivanzzz
Вы не понимаете, у вас уже есть правильная строка, в которой экранированы символы слеша.
>>> s = r'C:\Qt\1.txt'
>>> s
'C:\\Qt\\1.txt'
>>> print(s)
C:\Qt\1.txt
Если вы эту переменную s передатите , например, в open(), то лона будет правильна интерпретирована в системный путь.
>>> s
'C:\\Qt\\1.txt'
Это внутреннее представление питоном этой строки. Здесь все правильно
py.user.next
ivanzzz
Или как-то можно в сырую строку превратить?
Если передаёшь, там всё уже превращено. Однако x01 возникает тогда, когда ты сам это пишешь, а не передаёшь. В питоне последовательность \NUMBER в строке считается восьмеричным кодом символа. Но отображаются только 16-ричные коды символов, поэтому при выводе 8-ричный код преобразуется в 16-ричный.

>>> '\0'
'\x00'
>>> '\1'
'\x01'
>>> '\12'
'\n'
>>> '\123'
'S'
>>> '\1234'
'S4'
>>>
ivanzzz
Как сделать чтобы не переводилось в 16 коды?
py.user.next
ivanzzz
Как сделать чтобы не переводилось в 16 коды?
Правильно записать надо. Если ты записал \1, то и получаешь число. Поэтому писать надо либо \\1, либо в виде сырой строки (предпочтительнее).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB