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

转载于:https://www.cnblogs.com/yzxing/p/9427626.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值