python2转python3代码_2to3 – 自动Python 2到3代码翻译 – 开发工具(Python教程)(参考资料)...
使用2to3
2to3通常與Python解釋器一起安裝為腳本。它也位于Python根目錄的Tools/scripts目錄下
2to3的基本參數是要轉換的文件或目錄列表。這些目錄以遞歸方式遍歷Python源.
這是一個示例Python 2.x源文件,
def greet(name): print "Hello, {0}!".format(name)print "What"s your name?"name = raw_input()greet(name)
它可以通過命令行上的2to3轉換為Python 3.x代碼:
$ 2to3 example.py
打印對原始源文件的差異。2to3也可以將所需的修改寫回源文件。(原始文件的備份除非也給出了-n。)使用-w flag:
$ 2to3 -w example.py
改寫后,使用
def greet(name): print("Hello, {0}!".format(name))print("What"s your name?")name = input()greet(name)
在整個翻譯過程中保留注釋和精確縮進.
默認情況下,2to3運行一組預定義的固定器。-l標志列出了所有可用的固定器。可以使用-f給出一組明確的運行修復程序。同樣-x顯式禁用了混音器。以下示例僅運行has_key fixers:
$ 2to3 -f imports -f has_key example.py
此命令運行除apply fixer之外的每個修復程序:
$ 2to3 -x apply example.py
一些修復程序是explicit,意味著它們不是默認運行的,必須在要運行的命令行上標記。這里,除了默認的修復程序,idioms修復程序運行:
$ 2to3 -f all -f idioms example.py
請注意如何通過all啟用所有默認修復程序.
有時2to3會在源代碼中找到需要更改的位置,但2to3無法自動修復。在這種情況下,2to3將在diff的下方為文件打印警告。您應該解決警告,以便符合3.x代碼.
2to3也可以重構doctests。要啟用此模式,請使用-d標志。請注意only doctests將被重構。這也不要求模塊是有效的Python。例如,doctest就像reSTdocument中的例子也可以用這個選項重構.
-v選項可以輸出關于翻譯過程的更多信息.
因為一些打印語句可以解析為函數調用或語句,2to3不能總是讀取包含打印函數的文件。當2to3檢測到from __future__ print_function編譯器指令的存在時,它將其內部語法修改為將print()解釋為函數。也可以使用-p標志手動啟用此更改。使用-p在已經有其print語句轉換的代碼上運行修復程序
// -o或--output-dir選項允許指定處理輸出文件的分析目錄。使用它時需要-n標志,因為備份文件在沒有覆蓋輸入文件時沒有意義.
新版本3.2.3: -o選項已添加.
-W或--write-unchanged-files標志告訴2to3始終寫入輸出文件,即使文件不需要更改。這對-o最有用,所以整個Python源代碼樹都會從一個目錄復制到另一個目錄。這個選項意味著-w標志,否則就沒有意義了.
版本3.2.3中的新增內容:添加了-W標志.
--add-suffix選項指定要附加到所有輸出文件名的字符串。指定此時需要-n標志,因為在寫入不同的文件名時不需要備份。示例:
$ 2to3 -n -W --add-suffix=3 example.py
將導致轉換后的文件名為
新版本3.2.3: --add-suffix選項已添加.
要將整個項目從一個目錄樹轉換為另一個目錄樹,請使用:
$ 2to3 --output-dir=python3-version/mycode -W -n python2-version/mycode
總結
以上是生活随笔為你收集整理的python2转python3代码_2to3 – 自动Python 2到3代码翻译 – 开发工具(Python教程)(参考资料)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python第k序元素查找列表_【Pyt
- 下一篇: websocket python爬虫_p