如何正确读取文件中的黑色斜杠?

时间:2011-05-19 22:14:40

标签: python file-io

以下代码:

key = open("C:\Scripts\private.ppk",'rb').read()

读取文件并将其数据分配给var key

出于某种原因,反斜杠在此过程中成倍增加。我如何确保它们不会成倍增加?

5 个答案:

答案 0 :(得分:8)

你......不。它们在读入时会被转义,以便在写出/使用时能够正确处理。如果你要声明字符串并且不想加倍反斜杠,则可以使用原始字符串r'c:\myfile.txt',但这并不适用于您正在读取的文件的内容。

>>> s = r'c:\boot.ini'
>>> s
'c:\\boot.ini'
>>> repr(s)
"'c:\\\\boot.ini'"
>>> print s
c:\boot.ini
>>>

正如您所看到的,额外的斜杠存储在内部,但是当您在print语句中使用该值(写入文件,测试值等)时,它们会被正确评估。

答案 1 :(得分:4)

你应该在python and the backslash escape字符上阅读这篇精彩的博文。

  

在某些情况下,如果   Python将信息打印到   控制台,你会看到两个   反斜杠而不是一个。对于   例如,这是其中的一部分   repr()函数之间的区别   和str()函数。

     

myFilename =   “c:\ newproject \ typenames.txt”打印   repr(myFilename),str(myFilename)   产生

     

'C:\ newproject \ typenames.txt'   C:\ newproject \ typenames.txt

答案 2 :(得分:1)

其实有一个解决方案——使用eval,只要文件内容可以被某种形式的引号包裹起来即可。以下对我有用(PATH 包含一些执行 Matlab 的脚本):

MATLAB_EXE = "C:\Program Files (x86)\MATLAB\R2012b\bin\matlab.exe"
content = open(PATH).read()
MATLAB_EXE in content  # False
content = eval(f'r"""{content}"""')
MATLAB_EXE in content  # True

这通过将内容评估为 python 字符串文字来工作,使双转义转换为单个转义。原始字符串用于防止转义形成特殊字符。

答案 3 :(得分:0)

反斜杠表示为转义。你会看到文件中存在的每个真正的两个反斜杠,但这是正常的行为。

原因是反斜杠用于创建代表无法轻易表示的字符的代码,例如新行'\ n'或tab'\ t'。

答案 4 :(得分:0)

您是否尝试将单个反斜杠放入字符串中?带有反斜杠的字符串需要和转义字符,在本例中为“\”。它将使用单斜杠

打印到屏幕上