SyntaxError: EOL while scanning string literal的解決


python中字符串的最后一個字符是斜杠會導致出錯:SyntaxError: EOL while scanning string literal

【背景】

Python 2.7.2 中想要通過urllib下載百度空間中的圖片,存到本地。

參考這里:

http://www.cnblogs.com/huangcong/archive/2011/09/03/2165565.html

如此實現:

 

 saved_pic = r"E:\WebServer\WordPress\to_wp\hi-baidu-mover_v2\pic\" + picName + '.jpg'

urllib.urlretrieve(picUrl, saved_pic)

   但是去運行,結果出現語法錯誤:

 

 

   File "E:\WebServer\WordPress\to_wp\hi-baidu-mover_v2\hi-baidu-mover_v2011-12-17.py", line 251
    saved_pic = r"E:\WebServer\WordPress\to_wp\hi-baidu-mover_v2\pic\" + picName + '.jpg'
                                                                                        ^
SyntaxError: EOL while scanning string literal

 

【解決過程】

經過確認,確保自己的上述寫法,是符合語法的,沒有錯誤。但是結果卻還是出錯。

網上找了下,發現這位:

http://www.iteye.com/problems/64471

遇到了同樣的問題。結果也是沒法解決,或者只能用別的寫法,來避免這個問題。

初步判斷,應該是python的bug。

但是,事情總是要做的,還是要想辦法實現功能才可以。

然后自己經過測試,有其他幾種寫法,是可以的,有些寫法,還是會導致語法錯誤的。

結果如下:

 
          

    # method 1: compile OK     saved_pic = "E:\\WebServer\\WordPress\\to_wp\\hi-baidu-mover_v2\\pic\\"     saved_pic += picName + '.jpg'

    # method 2: compile OK     #saved_pic = r"E:\WebServer\WordPress\to_wp\hi-baidu-mover_v2\pic"     #saved_pic += '\\' + picName + '.jpg'

    # method 3: fail -> SyntaxError: EOL while scanning string literal     #saved_pic = r"E:\WebServer\WordPress\to_wp\hi-baidu-mover_v2\pic\" + picName + '.jpg'

    # method 4: fail -> SyntaxError: EOL while scanning string literal     #saved_pic = r"E:\WebServer\WordPress\to_wp\hi-baidu-mover_v2\pic\"     #saved_pic += picName + '.jpg'

【總結】
python中,如果你的字符串最后一位是斜杠(slash)字符,那么即使字符串前面加了r表示regular的普通字符串,也是無法通過編譯的,也是會導致SyntaxError的。
解決辦法就是,避開這種寫法,寫成這樣的:
 
          
 
          

    # method 1: compile OK     saved_pic = "E:\\WebServer\\WordPress\\to_wp\\hi-baidu-mover_v2\\pic\\"     saved_pic += picName + '.jpg'

或者是這樣:
 
          
 
          

    # method 2: compile OK     saved_pic = r"E:\WebServer\WordPress\to_wp\hi-baidu-mover_v2\pic"     saved_pic += '\\' + picName + '.jpg'

 
          

即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM