Здесь происходит то, что '\n'
является управляющим символом NewLine, Unicode U + 0010. Поскольку ни '\d'
, ни '\m'
не являются особенными, они остаются без изменений. Это может быть более ясно, когда вы пытаетесь напечатать p
:
>>> print(p)
M:\django
ewenv\django_projects\mediaproject\mediaproject\media
Символы \
, появившиеся как \\
, на самом деле представляют собой один \
в строке, а \n
фактически является новой строкой.
2 надежных способа вставить \
в строку:
последовательно удваивает их:
p = 'M:\\django\\newenv\\django_projects\\mediaproject\\mediaproject\\media'
используйте конструкцию r'...'
:
p = r'M:\django\newenv\django_projects\mediaproject\mediaproject\media'
Последнее проще при копировании / вставке пути.
Осторожно, другие \x
символы являются специальными: \a
, \b
, \f
, \r
, \t
, \v
.
Кроме того, '\xab'
является символом кода ab (например, '\ x41' является 'A' в кодировке ascii) '\uabcd'
является символом Unicode U + abcd, а '\U00abcdef'
является символом Unicode U + abcdef .