• 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应被视为不稳定,可能会在未来发生急剧变化。

  • 相关阅读:
    openSUSE 13.1 Milestone 4 发布
    Neo4j 2.0 M4 发布
    iBoxDB for .NET v1.5发布, 移动NoSQL数据库
    GNU libc (Glibc) 2.18 发布
    Android 开源项目维护者宣布退出
    Jeasyframe 开源框架 稳定版 V1.5 发布
    Spring Mobile 1.1.0.RC1 和 1.0.2 发布
    Deis logo 开源PaaS系统 Deis
    EasyCriteria 3.0 发布
    TypeScript 0.9.1 发布,新增 typeof 关键字
  • 原文地址:https://www.cnblogs.com/yzxing/p/9427626.html
Copyright © 2020-2023  润新知