2013-02-28 58 views
0


長話短說。 我有這樣的功能:Howto不能跳過python中的字符串函數參數

def save_screenshot(self, file_destination, picture_format = None) 
    file_path_name, file_extension = os.path.splitext(file_destination) 
    file_path, file_name = os.path.split(file_path_name) 
    (...) 

現在,我把這樣的功能:

save_screenshot("C:\Temp\picture.jpg", "JPG") 

我知道HOWTO無法逃脫在python的字符串(用「os.path.join」的幫助),但我不知道如何做到這一點,如果字符串是一個函數參數。如果我編寫「C:\\ Temp \\ picture.jpg」或「C:/Temp/picture.jpg」,該功能可以正常工作(在Windows上)。

如果您有一些建議,會很棒。
感謝

+2

是否想從控制檯讀取路徑?我似乎不太明白這裏的目標是什麼。 – dmg 2013-02-28 11:32:34

+4

您可以使用原始字符串,例如'R 「C:\ TEMP \ picture.jpg」'。 – nymk 2013-02-28 11:34:30

+0

@DJV:不,不是來自控制檯。腳本中沒有任何請求,所有內容都包含在腳本中。 – eljobso 2013-02-28 11:40:30

回答

1

如前所述,你可以使用:

原始字符串R 「串 」

save_screenshot(r"C:\Temp\picture.jpg", "JPG") 

它也應該可以用 「」「 串 」「」

save_screenshot("""C:\Temp\picture.jpg""", "JPG") 

也許我也可以參考堆棧上的這個答案: what-exactly-do-u-and-rstring-flags..

這基本上解釋瞭如何使用原始字符串文字來忽略從字符串中的反斜槓(主要是爲regexp)派生的轉義序列。

0

我的問題是你的問題不是使用os.path而是轉義/ unescape字符串。
這個功能會更好嗎?

def save_screenshot(self, file_destination, picture_format = None): 
    file_name = os.path.basename(file_destination) 
    path = os.path.dirname(file_destination) 
    base, ext = os.path.splitext(file_name) 
    e = ext if picture_format is None else '.%s' % picture_format.lower() 
    to_path = os.path.join(path, base + e) 
    print(to_path)