如何正确使用2to3对于 python?

我在 python 2.7中有一些代码,我想把它们全部转换成 python 3.3代码。我知道2to3可以使用,但我不确定如何使用它。

81269 次浏览

安装以下模块,将2to3命令直接添加到 entry _ points。

pip install 2to3

2到3个医生上编写时,要将整个项目从一个目录树转换为另一个目录树,请使用:

2to3 --output-dir=python3-version/mycode -W -n python2-version/mycode

要将目录中的所有 python2文件转换为3,只需在要翻译的目录中运行 $ C:\Program Files\Python\Tools\Scripts\2to3.py -w -n.。它会跳过所有的非 .py文件,无论如何,并转换其余。
注意 : 如果您也想要备份文件,请删除-n 标志。

如果您已经安装了 Python,那么 Python 2to3.py 文件主要位于目录 C:/Program Files/Python/Tools/script 中。我有 python 3.6,2to3在目录 C:/Program Files/Python 36/Tools/script 中。 要将某个 python2代码转换为 python3,请转到命令提示符,将目录更改为 C:/Program Files/Python36/Tools/script,其中可以找到2to3文件。然后添加以下命令: Python 2to3.py-w (脚本目录)。

C: Program Files Python 36 Tools script > python 2to3.py-w C: Users Iykes 桌面 test.py。

这里的’-w’确保为您的文件创建了一个备份文件。

在 Windows 上:

python {path_to_python}\tools\scripts\2to3.py --output-dir={output_dir} -W -n {input_dir}

path_to_python = 安装 Python 的目录

output_dir = 输出 Python 3脚本的目录

input_dir = 从哪里读取 Python 2脚本的目录

如果路径上没有 2to3,可以直接调用 lib2to3:

python -m lib2to3 directory\file.py

正如 那些文件(和其他答案)提到的,您可以使用一些标志进行更多的定制:

  • -w标志以启用写回,该标志将更改应用于文件
  • 禁用备份的 -n

(还有一些标志; 请参阅文档了解更多信息。)

在运行 2to3之前有一个备份是很重要的。

  1. 如果您使用 git,请做出承诺。
  2. 否则,请备份您的文件。

首先,在“软模式”下运行2to3,看看它实际上会做什么:

$ 2to3 /path/to/your/project

如果你对它的功能感到满意,那么你可以“真正地”运行2到3次:

$ 2to3 --write --nobackups /path/to/your/project

现在您已经正确地运行了 2to3:)

首次安装 python 2to3软件包:

C:\Default> pip install 2to3

然后将您的 python2文件转换为新文件夹中的 python3,即 python3-version/mycode

C:\Default> 2to3 your_file_name.py --output-dir=python3-version/mycode -w -n

您的新 python3文件可以看到在新的文件夹,即 python3-version/mycode

要将 python2的代码转换为 python3,首先使用

pip install 2to3

然后在 Python 代码所在的目录中运行此命令

2to3 -w -n .
  • - w 标志以启用写回,该标志将更改应用于文件
  • - n 禁用备份

运行它是非常简单的!我会考虑你已经安装了它,并逐步解释如何继续下去:

  1. 打开包含要转换的文件的主文件夹内的终端(或用于 win 用户的 cmd)

例如:。 C:\Users\{your_username}\Desktop\python2folder

  1. 类型

python {your_2to3.py_install_directory} -w .\

例如,在我的情况下(win10) :

python C:"\Program Files"\Python39\Tools\scripts\2to3.py -w .\

这将使程序扫描整个目录(以及子目录) ,并自动将 Python 2中编写的所有内容转换为 Python 3。

-w标志使脚本应用创建新的转换文件的更改。因此,删除这个你想只是扫描,看看什么需要转换(但没有实际做任何事情)

如果你只想转换一个文件而不是整个文件夹,只需用 .\代替 python2_file_name.py:

例如 python {your_2to3.py directory} -w python2_file_name.py

此外,默认情况下它创建一个。它转换的所有东西的 bak 文件。强烈建议保持这种方式,因为任何转换都容易出错,但是如果您想禁用自动备份,您也可以添加 -n标志。

例如 python C:"\Program Files"\Python39\Tools\scripts\2to3.py -w -n python2_file_name.py

3. 完成!