【背景】
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'
即可。