py2to3--将python2项目转成python3项目
py2to3--将python2项目转成python3项目
- 前言
- py2to3简介
- 代码分析
- 2to3.py
- py2to3.py
- del_bak.py
- test 和 test.py
- 结尾
前言
习惯python3的写法就不愿意用python2的语法规则。碰巧碰到了一个大型的python2项目。所以这时候py2to3就诞生了
py2to3简介
2to3的简单集合,主要实现目标:将一个python2项目全部转换为python3,所以现在就只有一个参数–目标项目的绝对路径(或者相对与main function的相对路径)
py2to3项目地址
现在就实现了主要的转换功能, 也希望可以帮助到需要用到的同学, 如果你有需要或者感兴趣, 可以尝试着给这个项目提交issue或者pr
代码分析
2to3.py
还可以通过 pip install 2to3 安装官方2to3模块
import sys
from lib2to3.main import mainsys.exit(main("lib2to3.fixes"))
py2to3.py
通过递归遍历目标项目文件夹下的所有文件,把python文件都进行一遍转换,2to3模块会自动识别文件内容并转换
参数为目标文件的绝对路径或者相对于该文件的相对路径
#-*- coding:utf-8 -*-
import os
import sys
WIN = sys.platform.startswith('win')
if WIN:path_sprit = '\\'
else:path_sprit = '/'def py2to3(path):''':param path: Absolute path to the target project folder:return: no return'''for i in os.listdir(path):path2 = os.path.join(path, i)if os.path.isdir(path2): # 如果为文件夹,则进入递归py2to3(path2)else:if 'py' == i.split('.')[1] and len(i.split('.')) == 2: # 如果不为文件夹并且为python文件则进行转换dir = path+path_sprit+iprint(dir)print(os.system(r'python 2to3.py -w %s' % dir))# Make the conversion if you through: pip install 2to3 .can use: os.system(r'2to3 -w %s' % dir)if __name__ == '__main__':print('Please provide an absolute path parameter.')try:path = sys.argv[1]print(("Let's look in %s." % path))except:print("Error, You Need Offer A Filepath!!! ")py2to3(path)
试例:
python py2to3.py 目标项目路径
del_bak.py
2to3模块转换成功之后,并不会删除原来的python2文件,而是将其备份为***.bak的文件。将del_bak.py与py2to3.py分开,是为了让自己有个“ 后悔 ”的机会,如果需要删除bak文件就运行这个吧,参数要求同py2to3.py
参数:目标文件的绝对路径或者相对于该文件的相对路径
ps: 需要注意的是,现在整体结构并不完善,使用del_bak.py的时候一定要注意路径拼写,假若你现在是root权限,而且不小心参数写了 ’ / ’ 那就会把电脑里所有的bak后缀的备份文件删掉!!!所以欢迎大家来完善code
#-*- coding:utf-8 -*-
import os
import sys
WIN = sys.platform.startswith('win')
if WIN:path_sprit = '\\'
else:path_sprit = '/'def del_bak(path):''':param path: Absolute path to the target project folder:return: no return'''for i in os.listdir(path):path2 = os.path.join(path, i)if os.path.isdir(path2): # 如果为文件夹,则进入递归del_bak(path2)else:if len(i.split('.')) == 3:if 'bak' in i.split('.')[2]:dir = path+path_sprit+iprint(dir)os.remove(dir)# tochange(path)
if __name__ == '__main__':print('Please provide an absolute path parameter.')try:path = sys.argv[1]print(("Let's look in %s." % path))except:print("Error, You Need Offer A Filepath!!! ")del_bak(path)
试例:
python del_bak.py 目标项目路径
test 和 test.py
/test 中是我放的例子
如果测试完之后还不过瘾,可以通过 test.py 重建 /test
#-*- coding:utf-8 -*-
import os
import sysfrom del_bak import del_bakWIN = sys.platform.startswith('win')
if WIN:path_sprit = '\\'
else:path_sprit = '/'CODE = '''print 123'''filename = 'test_.py'def test_file(path):''':param path: Absolute path to the target project folder:return: no return'''for i in os.listdir(path):path2 = os.path.join(path, i)if os.path.isdir(path2): # 如果为文件夹,则进入递归file_name = path2+path_sprit+filenamewith open(file_name, 'w') as file:file.write(CODE)print(file_name)test_file(path2)else:print(path2)with open(path2, 'w') as file:file.write(CODE)if __name__ == '__main__':print("to rebuild the testfile")del_bak('./test')test_file('./test')
结尾
欢迎各位老爷评论点赞
py2to3--将python2项目转成python3项目相关推荐
- py2to3——如何将Python2项目升级为Python3项目
py2to3--如何将Python2项目升级为Python3项目 前言 2to3 py2to3 快速开始 需要注意 from compiler.ast import flatten import ha ...
- 把Eclipse项目转换成Maven项目
把Maven项目转换成Eclipse项目只要使用Maven的Eclipse插件就能做到 mvn eclipse:eclipse 其实Maven的Eclipse插件也有把Eclipse项目转换成Mave ...
- 将已有项目转为se项目_如何将 Java 项目转换成 Maven 项目
本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确 ...
- 代码从svn到工作空间,Myeclipse中java项目转成Web项目
从svn到工作空间 1.新建一个web项目 2.从svn覆盖刚新建的web项目 Myeclipse中java项目转成Web项目 在eclipse导入一个myeclipse建的web项目后,在Eclip ...
- python3项目-终于找到python3项目实战教程
列表的元素是可以变动的,比如增加.删除.修改,不过需要注意的是,列表的元素不是基本数据类型,都是一个个的标识符引用对象.以下是小编为你整理的python3项目实战教程 先定义一个列表 a = [123 ...
- eclipse将java项目转换成maven项目
前几天做了一个事情,就是将一个普通的java web的工程转换成maven项目,现在分享一下做法,以及一些过程中我遇到的一些问题和注意点. 注意点:转成maven项目的有几点需要注意的. (1)找不到 ...
- 怎样把java项目转换成web项目_Eclipse中将Java项目转换成Web项目的方法
注意: 0.点击Further configuration available,修改eclipse默认的WebContent 并修改为WebRoot,勾选Generate web.xml deploy ...
- Eclipse中将Java项目转换成Web项目的方法
前言: 用Eclipse开发项目的时候,把一个Web项目导入到Eclipse里会变成了一个java工程,将无法在Tomcat中进行部署运行. 方法: 1.找到.project文件,找到里面的<n ...
- Intellij IDEA + Maven——jar项目改成war项目相互转换
解决方案 打开pom文件 找到<packaging>标签 如果没有 <packaging>标签,就新建<packaging>标签 如图,将里面的jar修改为war ...
最新文章
- 腾讯帝国的野蛮生长史
- Quartz2D的内存管理
- 计算机程序无权限卸载,无法卸载win7电脑中的软件,提示权限不足怎么办?
- 在WPF中显示动态GIF(转)
- javascript的关于刷新页面给出提示框的代码
- cbrt c语音_C语言有哪些鲜为人知的特性?
- Principles of Reactive Programming 之Actors are Distributed (3)
- 前端进阶试题-CSS篇
- redis tutorial
- python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
- 好看的UI个人主页源码
- qt TCP 网络编程
- 深度学习(5)之---目标检测综述:R-CNN、mask-RCNN、YOLO、SSD原理详解
- Behavior Creator 行为树可视化编辑器
- day002血字的研究
- Ubuntu下安装Genymotion安卓模拟器
- 如何把路由器设置为交换机模式来使用
- Calendar获取当前日期,或前几天,或后几天的日期
- 浅析网购中的客户对商品的评论
- 醇酰基转移酶基因对猕猴桃酯生物合成的作用
热门文章
- Chimera: A Virtual Data System for Representing, Querying, and Automating Data Derivation(论文阅读)
- 第1章 生物和生物圈
- 为什么计算机关机慢,为什么电脑关机速度很慢_加快电脑关机速度的具体办法...
- Android 手机玩转技巧
- URL,URI,URN三者之间的区别
- 基于Web的视频分享网站
- 【catkin】——如何导入一个catkin包的头文件和动态库
- 使input文本框不可编辑的方法
- 巨蟹女眼中真实的摩羯(图
- java如何添加一个网段,java 判断ip是不是属于一个网段