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项目相关推荐

  1. py2to3——如何将Python2项目升级为Python3项目

    py2to3--如何将Python2项目升级为Python3项目 前言 2to3 py2to3 快速开始 需要注意 from compiler.ast import flatten import ha ...

  2. 把Eclipse项目转换成Maven项目

    把Maven项目转换成Eclipse项目只要使用Maven的Eclipse插件就能做到 mvn eclipse:eclipse 其实Maven的Eclipse插件也有把Eclipse项目转换成Mave ...

  3. 将已有项目转为se项目_如何将 Java 项目转换成 Maven 项目

    本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确 ...

  4. 代码从svn到工作空间,Myeclipse中java项目转成Web项目

    从svn到工作空间 1.新建一个web项目 2.从svn覆盖刚新建的web项目 Myeclipse中java项目转成Web项目 在eclipse导入一个myeclipse建的web项目后,在Eclip ...

  5. python3项目-终于找到python3项目实战教程

    列表的元素是可以变动的,比如增加.删除.修改,不过需要注意的是,列表的元素不是基本数据类型,都是一个个的标识符引用对象.以下是小编为你整理的python3项目实战教程 先定义一个列表 a = [123 ...

  6. eclipse将java项目转换成maven项目

    前几天做了一个事情,就是将一个普通的java web的工程转换成maven项目,现在分享一下做法,以及一些过程中我遇到的一些问题和注意点. 注意点:转成maven项目的有几点需要注意的. (1)找不到 ...

  7. 怎样把java项目转换成web项目_Eclipse中将Java项目转换成Web项目的方法

    注意: 0.点击Further configuration available,修改eclipse默认的WebContent 并修改为WebRoot,勾选Generate web.xml deploy ...

  8. Eclipse中将Java项目转换成Web项目的方法

    前言: 用Eclipse开发项目的时候,把一个Web项目导入到Eclipse里会变成了一个java工程,将无法在Tomcat中进行部署运行. 方法: 1.找到.project文件,找到里面的<n ...

  9. Intellij IDEA + Maven——jar项目改成war项目相互转换

    解决方案 打开pom文件 找到<packaging>标签 如果没有 <packaging>标签,就新建<packaging>标签 如图,将里面的jar修改为war ...

最新文章

  1. 腾讯帝国的野蛮生长史
  2. Quartz2D的内存管理
  3. 计算机程序无权限卸载,无法卸载win7电脑中的软件,提示权限不足怎么办?
  4. 在WPF中显示动态GIF(转)
  5. javascript的关于刷新页面给出提示框的代码
  6. cbrt c语音_C语言有哪些鲜为人知的特性?
  7. Principles of Reactive Programming 之Actors are Distributed (3)
  8. 前端进阶试题-CSS篇
  9. redis tutorial
  10. python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
  11. 好看的UI个人主页源码
  12. qt TCP 网络编程
  13. 深度学习(5)之---目标检测综述:R-CNN、mask-RCNN、YOLO、SSD原理详解
  14. Behavior Creator 行为树可视化编辑器
  15. day002血字的研究
  16. Ubuntu下安装Genymotion安卓模拟器
  17. 如何把路由器设置为交换机模式来使用
  18. Calendar获取当前日期,或前几天,或后几天的日期
  19. 浅析网购中的客户对商品的评论
  20. 醇酰基转移酶基因对猕猴桃酯生物合成的作用

热门文章

  1. Chimera: A Virtual Data System for Representing, Querying, and Automating Data Derivation(论文阅读)
  2. 第1章 生物和生物圈
  3. 为什么计算机关机慢,为什么电脑关机速度很慢_加快电脑关机速度的具体办法...
  4. Android 手机玩转技巧
  5. URL,URI,URN三者之间的区别
  6. 基于Web的视频分享网站
  7. 【catkin】——如何导入一个catkin包的头文件和动态库
  8. 使input文本框不可编辑的方法
  9. 巨蟹女眼中真实的摩羯(图
  10. java如何添加一个网段,java 判断ip是不是属于一个网段