Linux系统和Windows系统下Python2代码转换为Python3代码工具使用指南

news2024/11/16 17:50:54

简介

本文主要介绍Linux系统和Windows系统下Python2代码转换为Python3代码工具2to3.py或2to3指令使用指南。

项目场景及问题描述

Python2的最后一个版本是2.7,在2020年彻底停止支持。有些环境不方便同时安装Python2和Python3,或者在使用Python3的环境下,不想再安装Python2,但是有的项目代码是基于Python2的,想要将其中Python2独有的代码部分转换为Python3可执行的代码,但工程量工作量较大,下面介绍Python3标准库自带的脚本 2to3.py 或指令 2to3 的使用方法。


Windows环境使用2to3.py

2to3.py 这个脚本通常会和Python解释器一起安装,位置在当前环境Python路径的Tools/scripts目录中。 (如:D:\Anaconda\anaconda3\Tools\scripts)
2to3.py文件位置
以 E:\workspace\pycharm\Vera 文件夹下有基于Python2写的代码VeraCode.py, Aaa.py, Bbb.py, Ccc.py为例。

1、将单个Python2代码转为Python3代码可用指令:

python 2to3.py E:\workspace\pycharm\Vera\VeraCode.py

指令执行后的VeraCode.py中Python2的语法将被修改为Python3的代码。

2、将单个Python2代码转为Python3代码并备份原代码可用指令:

python 2to3.py -w E:\workspace\pycharm\Vera\VeraCode.py

指令执行后,VeraCode.py中Python2的语法将被修改为Python3的代码,原代码备份为VeraCode.py.bak。
其中参数 -w 即备份原来代码,可从以下2to3.py的代码中看出,还有其他参数可自行查看

parser.add_option("-w", "--write", action="store_true",
                      help="Write back modified files")

3、将整个文件夹下所有Python2代码转为Python3代码并备份原代码可用指令:

python 2to3.py -w E:\workspace\pycharm\Vera

如果项目目录中Python文件很多,不需要备份,可以不使用参数 -w


Linux环境使用2to3指令

其实Linux环境中安装Python的目录下也有类似Windows系统的2to3.py脚本。位置在 /usr/lib/python3.10/lib2to3 文件夹,main.py函数。
但Linux环境可以直接使用 2to3 指令。

首先可以先用如下指令查看是否已经安装了 2to3

find /usr/local/ -name "2to3"

如果没有,可以用pip安装:

pip install 2to3

安装后,再查看是否安装好可以看到指令 find /usr/local/ -name "2to3" 的执行结果如下:

/usr/local/bin/2to3

接下来,使用方法类似Windows系统。
以 /app/models/Vera 文件夹下有基于Python2写的代码VeraCode.py, Aaa.py, Bbb.py, Ccc.py为例。
1、将单个Python2代码转为Python3代码可用指令:

2to3 /app/models/Vera/VeraCode.py

指令执行后的VeraCode.py中Python2的语法将被修改为Python3的代码。

2、将单个Python2代码转为Python3代码并备份原代码可用指令:

2to3 -w /app/models/Vera/VeraCode.py

指令执行后,VeraCode.py中Python2的语法将被修改为Python3的代码,原代码备份为VeraCode.py.bak。

3、将整个文件夹下所有Python2代码转为Python3代码并备份原代码可用指令:

2to3 -w /app/models/Vera

指令执行后可以看到代码被修改的部分。举个栗子:
代码转换举例


参考博客:

python2代码转换为python3
python2 转 python3 代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/642454.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JVM】JVM 垃圾回收算法

文章目录 前言标记清除(Mark-Sweep)介绍优缺点 复制(拷贝 Copying)介绍优缺点 标记整理(Mark-Compact)介绍优缺点 前言 目前JVM中有三种常见的垃圾回收算法,分别是:标记清除、标记整…

Matter实战系列-----1.软硬件开发环境搭建

一、硬件方面 我使用的是一套xG21 BRD4180B和两块xG24 BRD4187C,如下图: 1.1 RCP: 芯片型号EFR32MG21A020F1024IM32 1.2 Matter Light/Switch over Thread: 芯片型号EFR32MG24B220F1536IM48 1.3 蓝牙5.0 USB dongle 注意由于Linux对蓝牙…

阿里、字节、网易面试必考,黑马【爆火】微服务项目发布

最近,收到一位粉丝投稿,他说:“阿里三面凉凉了,输在了微服务上。” 在看到微服务的面试题后,整个人都是懵的,发现没有经验的自己,一窍不通。 如今,微服务已经成为Java开发者必备的…

深入篇【C++】string类的常用接口介绍:标准库中的string类 【万字总结】

深入篇【C】string类的常用接口介绍:标准库中的string类 Ⅰ.string类介绍Ⅱ.string类的常用接口①.string类对象的常用构造1.string()2.string(const char*ch)3.string(const string& str)4.string(size_t n,char c)5.string(const string& str,size_t pos,…

想开发测试工具,应该如何入手?

何为测试工具?就是能辅助测试同学来完成特定的操作的工具,比如常见的如postman、Fiddler、Charles、jira,包括jmeter等,当然还包括公司自己开发的用例转换工具,造数工具,Mock工具或是平台等等。一般以应用程…

测试在“鸡头”和“凤尾”间如何选择?

经常在知乎上碰到这样的问题:同时拿到多个offer,公司有大有小,有创业型有成熟性,怎么在“鸡头”和“凤尾”间做选择? 为什么会纠结呢?通常创业型公司,给优秀的测试员的薪酬远高于市场平均值&…

“我只想找个测试岗,你却百般刁难我!”给我们带来的思考

最近看到一篇帖子,讲的是一个七八年的大龄测试员被公司补偿性裁员后,找工作的糟心经历。 原文是酱紫的: ---------------------------------------- 不管怎么说,我做测试也有七八年了,一直觉得自己的技术还是可以的&…

MongoDB实际场景应用

你要构建一个在线零售商店,这个店铺需要处理会员数据、订单数据以及商品数据等。为了保存和管理这些数据,你可以使用MongoDB。 目录 1. 设计数据模式 2. 插入数据 3. 查询数据 1. 设计数据模式 对于在线零售商店的数据,你可以设计三个Mo…

3年经验,面试测试岗20k都拿不到了吗?

我的情况 大概介绍一下个人情况,女,本科,三年多测试工作经验,懂python,会写脚本,会selenium,会性能,然而到今天都没有收到一份offer!从年后就开始准备简历,年…

C#基于云计算SaaS模式的医学检验云LIS系统全套源码

一、云LIS系统概述: 云LIS系统是一种基于云计算技术的实验室信息管理系统,它的主要功能是管理实验室中的各种信息数据,包括样品数据、检测结果、仪器设备管理、质控管理等。 二、与传统的LIS系统相比,云LIS系统具有以下优势&…

考完PMP后,还有必要考NPDP吗?

PMP证书目前在国内有很高的知名度,报考人数也在逐年上升,可以说,几乎所有的项目经理都有过考PMP的计划。 但随着PMP的持证人数越来越多,不少考完PMP的项目经理,开始考虑要不要报名NPDP考试。 那么考完PMP后有必要考N…

软件测试项目拿到不知道从哪里下手?今天我手把手教你

1.登录页面 2.首页 3.项目管理 4.测试环境 1>设置headers;可以每个url设置共同的header,可以存在变量;执行时,指定接口补全header; 5.接口管理 swagger导入功能;根据指定的测试环境url,导入s…

基于javaweb jsp+SSM 网红书店图书借阅系统的设计与实现

一.项目介绍 本系统分为管理员和读者两类 管理员:维护管理员账号和读者账号信息、维护书籍分类信息、维护书籍信息、维护书籍借阅信息、维护书籍预约信息、邮件管理、书籍阅读量统计、系统管理 读者:书籍借阅、书籍预约、预约邮件管理以及个人信息 …

Kubernetes的kubectl命令补全

Kubernetes的kubectl命令补全 环境准备 首先我们需要安装一个kubernetes的集群,可以参考我写的教程: 文档教程:https://blog.csdn.net/m0_51510236/article/details/130842122视频教程:https://space.bilibili.com/34615738341…

【springboot 实践】断点续传这么搞--附代码

目录 背景开搞RandomAccessFileAPI 代码文件分块断点续传、文件秒传分块上传、文件合并 总结 今天给大家分享的又是一篇实战文章,也是最近私活里遇到的,万能的互联网给了我办法,分享一下。 背景 最近接到一个新的需求,需要上传2…

chatgpt赋能python:Python中如何居中输入文字

Python中如何居中输入文字 Python是一种流行的编程语言,因其易学易用而闻名。尽管Python的主要用途是开发程序,但是有时需要在输出中使用美观的文本格式。本文将详细介绍如何在Python中居中输入文字。 什么是文本居中? 文本居中是指将文本…

35 # 模块的断点调试 require 语法实现过程

虚拟机模块:可以创建沙箱环境 const k 100;const vm require("vm"); vm.runInThisContext("console.log(a)");node 中如何实现代码的调试 node 调试指南 1. 可以在浏览器中进行调试(比如调试 webpack 等模块可以使用&#xff0…

Arrays.asList()得到的是真的ArrayList?操作修改集合大坑

一、前言 今天在看阿里Java规范的时候看到一条规范,经常使用,却一直没有注意的一条! 相信大家应该踩过这个坑,下面来看一看阿里规范里的内容: 【强制】使用工具类 Arrays.asList() 把数组转换成集合时,不…

SpringBoot——SpringBoot服务启动过程源码详解剖析!

文章目录 引言主要流程启动类剖析启动类示例SpringApplication.run()方法 创建SpringApplication对象过程创建对象源码流程整体分析不服就debug 创建对象核心过程分解流程1:deduceFromClasspath()获取主程序类和应用类型流程2: setInitializers()设置初始…

人工智能的崛起:将导致大量工人流离失所

人工智能(AI)正在迅猛发展,并且已经开始改变世界。过去5到10年间,AI取得了巨大的进步,在某些领域甚至达到了人类水平,例如语音识别。AI的应用范围越来越广泛,其影响已经渗透到社会的方方面面。 …