雖然目前是過渡期,大部份 ê 物件閣是佇 Python2,咱嘛愛了解 Python2。咱就會使借著共 Python2 ê 程式碼 (Code),徙栽 (英文:Porting,華語: 移植,嘛會用直接用台語音念用英文: Phóo-thìng) 到 Python3,來了解 Python2 和 Python3 ê 無仝。
咱若先提彼篇 ê 戲文來走,利用 Python3 來搬演,你會看著錯誤:
$ python3 web-scrape.py Traceback (most recent call last): File "web-scrape.py", line 2, inimport urllib2 ImportError: No module named 'urllib2'
這咧錯誤,是揣無 'urllib2' 這个 module。若會按呢? 這時,你會當去 Google "urllib2 python3 python2" 一咧,你就會了解原來 python2 ê 'urllib2' 佇 python3 改名,毋若改名,閣成做 'urllib' ê 一部分,就是 'urllib.request'。
了解原理了後。紲--落來,咱愛思考按怎改程式較媠氣。"媠氣" ê 定義是在人ê,有人感覺愈緊會振動愈好,有人想欲寫一咧程式 Python2/Python3 攏會使行,有人感覺改愈少愈好。有人考慮著後擺予人好維持,這看你家己 ê 美感和追求ê目的是啥乜。
上簡單 ê 做法,是用文字編輯器攏有 ê 取代(Replace) 功能,共所有 urllib2 都換做 urllib.request。
我是用改愈少愈好,利用 import Module ê 智識: 若是我會使共 import 入來个 urllib.request 號名做 urllib2,按呢後壁毋是攏免改--阿?
我是用改愈少愈好,利用 import Module ê 智識: 若是我會使共 import 入來个 urllib.request 號名做 urllib2,按呢後壁毋是攏免改--阿?
import urllib.request as urllib2
按呢改一逝就好。按呢做,咱欲做 Python2/Python3 攏會用(i̋ng)行 ê 程式嘛真簡單: 揣出按怎予咱的程式知影是 Python2 抑是 Python3 來搬演我咧? 咱 google 一咧 "python3 python2 version detect",會知影利用 sys.version_info(),所以咱按呢改:
import sys
if sys.version_info >= (3, 0):
import urllib.request as urllib2
else:
import urllib2
現成ê例,我囥佇遮: web-scrape-all.py。你用 python web-scrape-all.py 抑是 python3 web-scrape-all.py 齊會用--得。