zoukankan      html  css  js  c++  java
  • 【Python】iiacm_filemaker ——简易的.cpp文件创建即初始化脚本,ACMer专用

    代码已全部重写,上次写的真是不忍直视……

    今天刚刚接触Python,本着学以致用的原则,就写了一个按照要求自动生成.cpp文件并初始化头文件的脚本。

    确定你的linux中安装了Python,将下面的代码拷贝进一个文件[filemaker],提权(chmod +x filemaker)

    功能:

    1、filemaker [文件名],即生成 文件名.cpp

    2、filemaker -e [A-Z] 即生成从A到你输入的字母的所有字母.cpp

    3、filemaker -n [1-26] 即生成从A开始的你输入个数的文件,大写字母递增

    可以将该脚本所在的目录设置环境变量,以后就可以直接使用了

    vim ~/.profile

    在最后加上

    export PATH="目录:$PATH"

    保存退出

    source .profile

    即可

    代码如下:

    注:第七行的 headfile 是你要初始化的头文件所在的目录

     1 #!/usr/bin/python
     2 
     3 import sys
     4 import getopt
     5 
     6 content = []
     7 headfile = "/home/kevince/Documents/acm/head/acmhead.h" #the directory of the headfile
     8 
     9 #load file head.h and save it with a list
    10 def loadcontent():
    11     f = open(headfile)
    12     lines = f.readlines()
    13     for line in lines:
    14         content.append(line)
    15 
    16 def Write(filename):
    17     f = open(filename, "w")
    18     for index, val in enumerate(content):
    19         f.write(val)
    20     f.close()
    21 
    22 def End(al):
    23     num = ord(al) - ord('A') + 1
    24     if num < 1 or num > 26:
    25         print 'A-Z, please'
    26         return
    27     for i in range(0, num):
    28         name = chr(ord('A') + i) + '.cpp'
    29         Write(name)
    30     return
    31 
    32 def Num(num):
    33     num = int(num)
    34     if num < 1 or num > 26:
    35         print '1-26, please'
    36         return
    37     for i in range(0, num):
    38         name = chr(ord('A') + i) + '.cpp'
    39         Write(name)
    40     return
    41         
    42 
    43 def Usage():
    44     print "
    "
    45     print "iiacm-filemaker [fliename]
    "
    46     print "or
    "
    47     print "iiacm-filemaker -n | -e
    "
    48     print "   -n  number of files
    "
    49     print "   -e  endplace of files
    "
    50     return
    51 
    52 def Make(args):
    53     Write(args[0]+'.cpp')
    54     return
    55 
    56 #main function
    57 def main():
    58     try:
    59         opts, args = getopt.getopt(sys.argv[1:], 'e:n:', ['--end', '--num'])
    60     except getopt.GetoptError:
    61         Usage()
    62         sys.exit()    
    63     loadcontent()  #loadcontent
    64     for o, a in opts:
    65         if o in ('-e', '--help'):
    66             End(a)
    67             sys.exit()
    68         if o in ('-n', '--num'):
    69             Num(a)
    70             sys.exit()
    71     if len(args) == 0:
    72           Usage()
    73     else:
    74         Make(args)
    75     
    76 
    77 
    78 if __name__ == '__main__':
    79     main()

     

  • 相关阅读:
    javascript 如何获取return回来的对象值
    遮罩层背景设置
    Javascript跨域请求的几种解决方法
    手机端viewport的设置规范
    javascript定义类和类的实现
    javascript 中对this关键字的一些理解
    实例化对象的时候。其实就是调用构造函数
    Javascript定义类(class)的三种方法
    javascript面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
    JavaScript判断横屏/竖屏
  • 原文地址:https://www.cnblogs.com/kevince/p/3931111.html
Copyright © 2011-2022 走看看