2011-05-19 51 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

您是否試圖將單個反斜槓放入字符串中?帶反斜槓的字符串需要並轉義字符,在本例中爲「\」。它會用單斜槓打印到屏幕上