我的第一个python程序--给2.x的print代码加上括号

  最近想学习一门脚本语言,综合考虑,选择了python.

  花了几天时间看完了 简明 Python 教程 ,想着应该写点什么东西才好,刚好我使用的是3.x版本,以前好多2.x的代码都直接报错,尤其是print语句,手动加()太蛋疼,遂起了写个自动加()的脚本的心思.

  先是在这里找到了 python 读取一个目录下的所有目录和文件 的代码,然后写了了个fixPrint的函数, 在原有代码的基础上加上了修复print的功能,不多说了,直接上代码:

import os
allFileNum = 0
def printPath(level, path):
    global allFileNum
    '''
    打印一个目录下的所有文件夹和文件
    '''
    # 所有文件夹,第一个字段是次目录的级别 
    dirList = []
    # 所有文件
    fileList = []  
    # 所有文件 包含路径
    filePathList = []
    # 返回一个列表,其中包含在目录条目的名称(google翻译)
    files = os.listdir(path)
    # 先添加目录级别
    dirList.append(str(level))
    for f in files:
        if(os.path.isdir(path + '/' + f)):
            # 排除隐藏文件夹。因为隐藏文件夹过多
            if(f[0] == '.'):
                pass
            else:
                # 添加非隐藏文件夹
                dirList.append(f)
        if(os.path.isfile(path + '/' + f)):
            # 添加文件
            fileList.append(f)
            filePathList.append(path + '/' + f)
    # 当一个标志使用,文件夹列表第一个级别不打印
    i_dl = 0
    for dl in dirList:
        if(i_dl == 0):
            i_dl = i_dl + 1
        else:
            # 打印至控制台,不是第一个的目录
            print ('-' * (int(dirList[0])), dl)
            # 打印目录下的所有文件夹和文件,目录级别+1
            printPath((int(dirList[0]) + 1), path + '/' + dl)
    for fl in fileList:
        # 打印文件
        print ('-' * (int(dirList[0])), fl)
        #fixPrint(fl)
        # 随便计算一下有多少个文件
        allFileNum = allFileNum + 1
    for fl in filePathList:
       fixPrint(fl)
def fixPrint(path):
    file  = open(path,"r",encoding="utf-8")
    newLines = [];
    all_the_text = file.readlines( )
    for line in all_the_text:
        index = line.find("print")
        #检查当前行是否有print 同时是否已经有()了
        if(index>=0 and line[index+5:index+8].find('(')==-1):
            #对有print的数据进行处理,
            line = line.replace("print","print (") 
            if(line.find("\n")>0):
                 line =  line.replace("\n"," )" +"\n") 
            else:
                line+=")"
        newLines.append(line)
    file.close()

     #直接覆盖掉原来的文件 
    newFile = open(path,"w",encoding="utf-8")
    for line in newLines:
      newFile.write(line)
    newFile.close()

if __name__ == '__main__':
    printPath(1, "你的目标文件所在文件夹路径")

 

posted @ 2014-06-13 00:14  碎景  阅读(3444)  评论(0编辑  收藏  举报