2to3: Python2代码转换为Python3

2024-01-02
#Python

1. 前言

之前写的 Python 2 代码,可以通过官方自带工具 2to3 1 自动转换为 Python 3 代码。

经过测试, Python 3.9.13 可以用 2to3 工具。

2. 用法

2to3 -n -W --add-suffix=3 example.py

会生成 example.py3 。

说明:

  • -n 将备份原始文件
  • -w 标志启用回写回更改
  • -l 标志列出了所有可用的修复程序
  • -f 给出要运行的显式修复程序集
  • -x 明确禁用了修复程序
  • -v 可以输出有关翻译过程的更多信息。
Usage: 2to3 [options] file|dir ...

Options:
  -h, --help            show this help message and exit
  -d, --doctests_only   Fix up doctests only
  -f FIX, --fix=FIX     Each FIX specifies a transformation; default: all
  -j PROCESSES, --processes=PROCESSES
                        Run 2to3 concurrently
  -x NOFIX, --nofix=NOFIX
                        Prevent a transformation from being run
  -l, --list-fixes      List available transformations
  -p, --print-function  Modify the grammar so that print() is a function
  -e, --exec-function   Modify the grammar so that exec() is a function
  -v, --verbose         More verbose logging
  --no-diffs            Don't show diffs of the refactoring
  -w, --write           Write back modified files
  -n, --nobackups       Don't write backups for modified files
  -o OUTPUT_DIR, --output-dir=OUTPUT_DIR
                        Put output files in this directory instead of
                        overwriting the input files.  Requires -n.
  -W, --write-unchanged-files
                        Also write files even if no changes were required
                        (useful with --output-dir); implies -w.
  --add-suffix=ADD_SUFFIX
                        Append this string to all output filenames. Requires
                        -n if non-empty.  ex: --add-suffix='3' will generate
                        .py3 files.

3. 延伸阅读

  1. 2to3 — Automated Python 2 to 3 code translation — Python 3.12.1 documentation