Подробности см. В разделе 2.4.1 в документах
Давайте рассмотрим различные строки и почему они работают:
>>> a = open("D:\users\xy\Desktop\PC_daten.txt")
>>> a
<open file 'D:\\users\\xy\\Desktop\\PC_daten.txt', mode 'r' at 0x00000000046989C0>
\
- это escape-символ в строке, который используется для специальных символов, таких как символ новой строки (\n
).В этом случае вам повезло, что ни одна из комбинаций \u
\x
\P
не указывает на такой специальный символ, следовательно, он работает, в отличие от open("foo\newfile.txt")
>>> b = open("D:\\users\\xy\\Desktop\\PC_daten.txt")
>>> b
<open file 'D:\\users\\xy\\Desktop\\PC_daten.txt', mode 'r' at 0x00000000048B2300>
Метод сохранения,\\
конструкций экранирует \
, следовательно, вы также можете сделать open("foo\\newline")
>>> c = open(r"D:\users\xy\Desktop\PC_daten.txt")
>>> c
<open file 'D:\\users\\xy\\Desktop\\PC_daten.txt', mode 'r' at 0x00000000048B20C0>
Также сохранить, так как префикс r
указывает необработанную строку, \
принимаютсябуквально, а не как escape-последовательности
>>> d = open(r"D:\\users\\xy\\Desktop\\PC_daten.txt")
>>> d
<open file 'D:\\\\users\\\\xy\\\\Desktop\\\\PC_daten.txt', mode 'r' at 0x00000000048B2390>
Здесь у вас есть необработанная строка (с предшествующим r
), но вы все равно используете double \
, следовательно, у вас есть \\
в пути.Это работает, потому что Windows понимает пути с двойным \
, который вы также можете подтвердить в cmd