Следующий код:
key = open("C:\Scripts\private.ppk",'rb').read()
читает файл и присваивает свои данные var key
.
По какой-то причине обратные косые черты умножаются в процессе. Как я могу убедиться, что они не будут умножаться?
Ты... нет. Они экранируются, когда их считывают, чтобы они правильно обрабатывались, когда они были выписаны/использованы. Если вы объявляете строки и не хотите удваивать обратные косые черты, вы можете использовать необработанные строки r'c:\myfile.txt'
, но это действительно не относится к содержимому файла, который вы читаете.
>>> s = r'c:\boot.ini'
>>> s
'c:\\boot.ini'
>>> repr(s)
"'c:\\\\boot.ini'"
>>> print s
c:\boot.ini
>>>
Как вы можете видеть, дополнительные косые черты сохраняются внутри, но когда вы используете значение в инструкции печати (записываете файл, проверяете значения и т.д.), они оцениваются правильно.
Вы должны прочитать эту замечательную запись в блоге питон и символ обратной косой черты.
И при некоторых обстоятельствах, если Python выводит информацию на консоли, вы увидите два обратная косая черта, а не одна. Для Например, это часть разница между функцией repr() и функция str().
myFilename = "c:\newproject\typenames.txt" print repr (myFilename), str (myFilename) производит
'C:\новыйПроект\typenames.txt' C:\новыйПроект\typenames.txt
Обратные косые черты представлены как экранированные. Вы увидите две обратные косые черты для каждой реальной, существующей в файле, но это нормальное поведение.
Причина заключается в том, что обратная косая черта используется для создания кодов, которые представляют символы, которые не могут быть легко представлены, например, новая строка '\n' или tab '\ t'.
Вы пытаетесь поместить одиночную обратную косую черту в строку? Строки с обратными косыми чертами требуют и управляют символом, в данном случае "\". Он будет печатать на экране с одной косой чертой
repr()
; они не сохраняются в строке и, следовательно, не требуют «оценки» приprint
при обычной печати.