2013-02-21 48 views
1
source = "C:\Program Files (x86)\xxx\yyy\Agent\node.default\blr-w2k8-252\data\somefile.iso" 
print source 

輸出:路徑轉義序列

"C:\Program Files (x86)\xxx\yyy\Agent 
ode.defaulblr-w2k8-252\data\somefile.iso" 

注意,對於\n頌歌我得到了一個新的生產線和deaful t\ BLR不見了

我做source=source.replace('\\', '/')但得到了同樣的輸出,即使/n也造成新的路線。

我做source=source.encode('string-escape')現在輸出是別的東西

輸出:

"C:\\Program Files (x86)\\xxx\\yyy\\Agent\node.default\x08lr-w2k8-252\\data\\somefile.iso" 

只有一個原始的字符串即工作

source=r"C:\Program Files (x86)\xxx\yyy\Agent\node.default\blr-w2k8-252\data\somefile.iso" 

但在我的節目,我只有字符串變量。如何使它工作或如何使字符串變爲原始的?

+0

你說的字符串變量是什麼意思?那個變量的值是如何設定的? – Ric 2013-02-21 06:18:17

+0

這裏我已經硬編碼了,但是在程序中有一些方法是將路徑作爲字符串傳遞給變量。 – Reuben 2013-02-21 06:32:04

+0

即使在窗口上也使用正斜槓。 – jdi 2013-02-21 07:46:07

回答

1

字符串文字不改變字符串的數據類型之前指定的「R」;它隻影響如何解釋字符串字面值。所以你的問題很可能是信息被收集到字符串中的方式,而不是字符串被收集後的存儲方式。還要注意,當你在Python中打印一個字符串時,輸出會自動包含轉義字符(例如「output:」示例中的雙斜槓)。該字符串只包含一個斜線,即使兩者都顯示。

+0

但是,使用該源變量時我做shutil.copy(源,目標) 我正在錯誤: 錯誤複印:[錯誤22]無效的模式(「RB」)或 文件名:「C: \\ Program Files文件(x86)的\\ \\ XXX YYY \\代理\ node.default \ x08lr-w2k8- 252 \\ \\數據somefile.iso」 – Reuben 2013-02-21 06:29:49

+0

\ b的改變爲X08 – Reuben 2013-02-21 06:30:56

+0

@Reuben - 那錯誤可能只有當您將該字符串指定爲非原始字符時纔會發生 - 原因是它在'Agent \ node.default'位具有'\ n'而不是'\\ n' - 與換行符一樣是'\ n' 。錯誤是將錯誤添加到錯誤中以模仿正常的字符串文字符號(因此非打印字符是可讀的)。嘗試使用原始字符串與您的實際代碼(調用'shutil.copy')並查看會發生什麼。我已經嘗試過了,沒有任何問題。 – Steve314 2013-02-21 08:33:02

1

閱讀escape sequences。在字符串之前使用'r'會告訴Python忽略轉義序列並逐字地取出字符串。當你將源代碼硬編碼爲一個值時,它與調用一個函數時賦值源的值不同。如果它不起作用,請檢查您正在調用的函數如何創建該路徑。