python2x如何遷移代碼到python3中

來源:互聯網
上載者:User

標籤:檔案的   獲得   括弧   修改   程式   function   應用   ports   form   

2to3 - 自動Python 2到3代碼轉換

2to3是一個Python程式,它讀取Python 2.x原始碼並應用一系列修複程式將其轉換為有效Python 3.x代碼。標準庫包含一組豐富的修複程式,可以處理幾乎所有代碼。但是,2to3支援庫lib2to3是一個靈活的通用庫,因此可以為2to3編寫自己的修複程式。 lib2to3也可以適用於需要自動編輯Python代碼的自訂應用程式。

使用2to3的

2to3通常與Python解譯器一起安裝為指令碼。它也位於Python根目錄的Tools / scripts目錄中。

2to3的基本參數是要轉換的檔案或目錄的列表。這些目錄將以遞迴方式遍曆Python原始碼。

以下是Python 2.x源檔案樣本example.py:

def  greet (name ):    列印 “你好,{0}!” 。格式(名稱)列印 “你叫什麼名字?” name  =  raw_input ()greet (name )

它可以通過命令列上的2to3轉換為Python 3.x代碼:

$ 2to3 example.py

列印對原始源檔案的差異。2to3還可以將所需的修改寫回源檔案。(當然,除非也給出了-n,否則也會對原始文??件進行備份。)使用-w標誌啟用後面的更改:

$ 2to3 -w example.py

轉換後,example.py看起來像這樣:

def  greet (name ):    print (“Hello,{0}!” 。format (name ))print (“你叫什麼名字?” )name  =  input ()greet (name )

在整個翻譯過程中保留評論和精確縮排。

預設情況下,2to3運行一組預定義的修複程式。該-l標誌列出所有可用的固定器。可以使用-f給出一組明確的運行 修複程式。同樣,-x顯式禁用修複程式。以下樣本僅運行imports和has_key修複程式:

$ 2to3 -f進口-f has_key example.py

此命令運行除應用修複程式之外的每個修複程式:

$ 2to3 -x應用example.py

某些修複程式是顯式的,這意味著它們不是預設啟動並執行,必須在命令列中列出才能運行。在這裡,除了預設修複程式之外,還運行了成語修複程式:

$ 2to3 -f all -f idioms example.py

請注意如何通過all來啟用所有預設修複程式。

有時2to3會在原始碼中找到需要更改的位置,但2to3無法自動修複。在這種情況下,2to3將在檔案的差異下列印警告。您應該解決警告以獲得相容的3.x代碼。

2to3也可以重構doctests。要啟用此模式,請使用-d 標誌。請注意,只有 doctests才會被重構。這也不要求模組是有效Python。例如,rest文檔中的doctest樣本也可以使用此選項進行重構。

-v選項可以對翻譯過程的詳細資料輸出。

-p通過時,2to3將print視為函數而不是語句。從 __future__ import print_function使用時,這很有用。如果未給出此選項,則列印修複程式將在一組額外的括弧中包圍列印調用,因為它無法區分帶括弧的print語句(例如print (“a” + “b” + “c”))和a真正的函數調用。

lib2to3 - 2to3的庫

警告

 

該lib2to3 API應被視為不穩定,可能會在未來發生急劇變化。

python2x如何遷移代碼到python3中

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.