2010-09-10 16 views
1

我從wx.FileDialog (getpath())路徑顯示"c:\test.jpg"不與OpenCV的cv.LoadImage()這就需要"\\""/"如何更換「」與「\」

所以作品中,我試圖用替換功能例如:

s.replace("\","\\"[0:2]),s.replace("\\","\\\"[0:2]) 

但沒有那些工作。

而且,此命令s.replace("\\","/"[0:1])返回相同的路徑,我不知道爲什麼。

你能幫我解決這個簡單的問題。

ps,我很新的python

非常感謝你。抱歉我的語法

+0

你試過's.replace( 「\\」, 「/」)'正斜槓是在Win和linux COMPAT。 – RobertPitt 2010-09-10 13:36:33

+1

你不應該把一個帶有嵌入式轉義符的字符串傳遞給一個函數來讓它正確地打開...... – 2010-09-10 13:49:00

回答

4

\轉義下一個字符。要真正得到反斜槓,你必須逃避它。使用\\

s.replace("\\","/") 
2

我覺得你找s.replace("\\","/")

綜觀文檔,和IM不是一個Python程序員,但它像這樣:

str.replace(old, new[, count]) 

所以你並不需要第三參數,但你需要新老舊的東西。

s.replace("\\","/") 

我們\\爲理由,因爲如果我們只有"\"這意味着你的逃避報價和你old參數會發送一個"如果蟒蛇不會觸發和錯誤之時。

你需要發送一個反斜槓如\所以什麼是真正被髮送到解釋是單\

你將與SO語法高亮,其中字符串被轉義。提示

s.replace("\","\\"[0:2]) #yours      " 
s.replace("\\","/") #mine 

http://en.wikipedia.org/wiki/Escape_character

0

它不完全清楚你想要怎麼處理路徑,但有很多功能可以處理它們。您可能需要使用os.path.normpath(),它將更正您運行的任何平臺的斜線。

0

在Python中,你可以獨立使用/從OS作爲路徑分隔符(如RobertPitt指出的那樣,你可以做到這一點無論如何)。

但是,爲了回答你的問題,這應該工作:

str.replace("\\", "\\\\") 
+1

只是爲了讓你知道如果你不知道,Windows和unix都支持正斜槓,所以它最好總是標準化路徑用'/' – RobertPitt 2010-09-10 13:55:30

+0

@RobertPitt:不,我沒有,謝謝。 – Bobby 2010-09-10 14:06:44

0
def onOpen(self, event): # wxGlade: MyFrame.<event_handler> 
    dlg = wx.FileDialog(self, "Open an Image") 
    if dlg.ShowModal() == wx.ID_OK: 
     __imgpath__ = dlg.GetPath() 
     print 'Selected:', dlg.GetPath() 
     self.panel_2.LoadImage(cv.LoadImage(__imgpath__)) 

我不知道爲什麼,但它與OpenCV的工作。

輸出:「選擇:C:\測試。JPG」

我很抱歉,我沒有先嚐試一下。