用Python写一个将Python2代码转换成Python3代码的批量处理脚本

上一篇博客介绍了如何用Python3自带的工具实现将Python2代码转换成Python3代码,详细可见《使用Python内置2to3工具实现Python2.x代码向Python3.x代码的转换
但是会附带生成bak文件。

本文将用Python来实现将Python2代码转换成Python3代码批处理以及对生成的bak文件批量删除

代码如下:

import os  

# 定义一个处理方法
def Python2toPython3(dirname, p2to3FileName):    
    if os.path.exists(dirname):        
        for dirpath, dirnames, filenames in os.walk(dirname):            
            for filename in filenames:                
                if filename.endswith('.py'):                    
                    fileFullName = os.path.join(dirpath, filename)                    
                    print('Processing File:', fileFullName)                    
                    pycode2to3 = ("python " + p2to3FileName + " -w " +fileFullName)                    
                    print((os.popen(pycode2to3, 'r').read()))  

# 定义一个删除中间文件bak的方法
def del_files(path):
    for root , dirs, files in os.walk(path):
        for name in files:
            if name.endswith(".bak"):   #指定要删除的格式
            os.remove(os.path.join(root, name))
            print ("Delete File: " + os.path.join(root, name))
   
# dirname 需要转换的文件目录
dirname = "D:/anaconda/pebl/pebl-1.01"

# p2to3FileName 本机Python安装目录下的2to3.py的路径,2to3.py是python自带的工具
p2to3FileName = ("D:/anaconda/Tools/scripts/2to3.py") 

Python2toPython3(dirname, p2to3FileName)
del_files(dirname)

 
贝叶斯网络的pebl包,因为有10多年没有更新,所以就用这个包进行批量处理。在这里插入图片描述
最后所有文件都成功从Python2转换成Python3,并且没有bak文件生成。

代码很简单,就是遍历给定的目录,如果是".py"文件,就调用Python自己的2to3.py工具进行处理。

发布了10 篇原创文章 · 获赞 20 · 访问量 4371

猜你喜欢

转载自blog.csdn.net/Joker00007/article/details/104466009