zoukankan      html  css  js  c++  java
  • 我的第一个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("
    ")>0):
                     line =  line.replace("
    "," )" +"
    ") 
                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, "你的目标文件所在文件夹路径")
  • 相关阅读:
    洛谷 P1981 表达式求值
    1696:逆波兰表达式
    C# winform选择文件、选择文件夹、打开文件
    建立二叉树的二叉链表存储结构(严6.70)
    二叉树的深度
    Sequence
    c++优先队列(priority_queue)用法详解
    二叉树的操作
    [清华集训2015]灯泡(浙江大学ZOJ 3203 Light Bulb)
    Go 和 Colly笔记
  • 原文地址:https://www.cnblogs.com/suijing/p/3784953.html
Copyright © 2011-2022 走看看