2011-05-19 41 views
1

以下代码:如何正确读取文件中的黑色条纹?

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

读取文件和它的数据分配给了var key

出于某种原因,反斜杠在过程中会相乘。我怎样才能确保他们不会倍增?

回答

8

你......不。他们在阅读时会被转义,以便他们在写出/使用时能够正确处理。如果你声明字符串,不想加倍的反斜杠,您可以使用原始字符串r'c:\myfile.txt',但并没有真正应用到您正在阅读文件的内容。

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

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

+0

为什么这个答案有六个upvotes? “他们在阅读时逃脱”与发生的事情完全相反。额外的斜杠是由'repr()'添加的;它们不存储在字符串中,因此在正常打印时不需要通过“print”进行“评估”。 – kindall 2011-05-19 23:57:42

0

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

原因是反斜杠用于创建代表不容易表示的字符的代码,如新行'\ n'或制表符'\ t'。

4

你应该阅读python and the backslash escape这个伟大的博客文章角色。

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

MyFileName的= “C:\ newproject \ typenames.txt” 打印 再版(MyFileName的),STR(MyFileName的) 产生

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

0

您是否试图将单个反斜杠放入字符串中?带反斜杠的字符串需要并转义字符,在本例中为“\”。它会用单斜杠打印到屏幕上