zoukankan      html  css  js  c++  java
  • python2x如何迁移代码到python3中

    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显式禁用修复程序。以下示例仅运行importshas_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应被视为不稳定,可能会在未来发生急剧变化。

  • 相关阅读:
    ABAP-FI-Redirection of read accesses from ANEA to FAAV_ANEA failed
    招聘
    五分钟教你在长沙如何找到靠谱的驾校和教练(长沙找驾校)
    数组哪些方法能改变原数组,以及循环改变数组的情况
    FXGL游戏开发-JavaFX游戏框架
    tempermonkey.d.ts | 油猴函数类型
    post导出文件
    mescroll.js 使用
    查看托管应用池用法
    IDEA配置
  • 原文地址:https://www.cnblogs.com/yzxing/p/9427626.html
Copyright © 2011-2022 走看看