2017年8月26日 星期六

Python ê - Python2/Python3 徙栽

前一篇咱大概照原作者 ê 理路去寫。毋過,有一咧問題: 我是較偏向愛用 Python3 來實作。因為這是未來 ê 趨勢
雖然目前是過渡期,大部份 ê 物件閣是佇 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, in 
    import urllib2
ImportError: No module named 'urllib2'

python3,就是強迫使用 python3 解譯器,就算 web-scrapte.py 內的頭一是寫 #!/usr/bin/python來指定用 python2,伊嘛袂伊。
這咧錯誤,是揣無 '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 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 齊會用--得。




沒有留言:

佇 Linux 來看GPX 檔案

最近定定有戶外活動。使用𤆬路機 (GPS) 來記錄行過的路線。普通我記錄路線,攏是用手機仔抑是專門个𤆬路機,罕得用電腦來看。 毋過,"仙人拍鼓有時錯,跤步踏差啥人無"。有一擺我無細膩,袂記得共一擺活動的路線收煞起來,閣直接開始記錄下一擺的活動,按呢共幾落...