【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 是你要初始化的头文件所在的目录
#!/usr/bin/python import sys
import getopt content = []
headfile = "/home/kevince/Documents/acm/head/acmhead.h" #the directory of the headfile #load file head.h and save it with a list
def loadcontent():
f = open(headfile)
lines = f.readlines()
for line in lines:
content.append(line) def Write(filename):
f = open(filename, "w")
for index, val in enumerate(content):
f.write(val)
f.close() def End(al):
num = ord(al) - ord('A') + 1
if num < 1 or num > 26:
print 'A-Z, please'
return
for i in range(0, num):
name = chr(ord('A') + i) + '.cpp'
Write(name)
return def Num(num):
num = int(num)
if num < 1 or num > 26:
print '1-26, please'
return
for i in range(0, num):
name = chr(ord('A') + i) + '.cpp'
Write(name)
return def Usage():
print "\n"
print "iiacm-filemaker [fliename]\n"
print "or\n"
print "iiacm-filemaker -n | -e\n"
print " -n number of files\n"
print " -e endplace of files\n"
return def Make(args):
Write(args[0]+'.cpp')
return #main function
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], 'e:n:', ['--end', '--num'])
except getopt.GetoptError:
Usage()
sys.exit()
loadcontent() #loadcontent
for o, a in opts:
if o in ('-e', '--help'):
End(a)
sys.exit()
if o in ('-n', '--num'):
Num(a)
sys.exit()
if len(args) == 0:
Usage()
else:
Make(args) if __name__ == '__main__':
main()
【Python】iiacm_filemaker ——简易的.cpp文件创建即初始化脚本,ACMer专用的更多相关文章
- python搭建简易服务器实例参考
有关python搭建简易服务器的方法. 需求分析: 省油宝用户数 已经破了6000,原有的静态报表 已经变得臃肿不堪, 每次打开都要缓上半天,甚至浏览器直接挂掉 采用python搭建一个最最简易的 w ...
- MFC套接字连接不成功-记得在app的cpp文件里面初始化套接字
MFC套接字连接不成功-记得在app的cpp文件里面初始化套接字 stdafx.h文件中添加:#include "afxsock.h" BOOL CMFC_TCP_Client_c ...
- Python编写简易木马程序(转载乌云)
Python编写简易木马程序 light · 2015/01/26 10:07 0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能 ...
- ubuntu系统安装初始化脚本
ubuntu系统安装初始化脚本 经常安装卸载ubuntu,每次系统安装完成后要安装好多软件,一个个命令输很麻烦浪费时间,一个sh文件全搞定! 1. flashplayer下载:点击这里 2. Auda ...
- 分析MariaDB初始化脚本mysql_install_db
在初始化MySQL的过程中经常会碰到各种问题,如 FATAL ERROR: Could not find ./bin/my_print_defaults ERROR: Can't create/wri ...
- jeecg安装——mysql数据库创建+手动执行初始化脚本
国产的开源项目官方文档写得那么详细,已经是很厚道了,可惜俺这种菜鸟还是会碰到各种"小"问题,做个笔记先! 1.新建数据库: CREATE DATABASE jeecg DEFAUL ...
- centos7 系统初始化脚本
现在自己的本地虚拟机系统,直接安装的是centos7.2 mini版,安装完成发现好多东西都没有安装,所以写了一个简单的系统初始化脚本,让自己可以省一些力气,哈哈 人懒主要是. 下面贴出写的脚本,脚本 ...
- 做了一个简易的git 代码自动部署脚本
做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08) 阅读(200 ...
- Openwrt 初始化脚本
Openwrt 使用自己的初始化脚本系统,所有的初始化脚本位于 /etc/init.d 目录下. 任何一个初始化脚本必须包含基本的 start() 和 stop() 函数.当系统启动或用户拉起对应的进 ...
随机推荐
- DataGridView添加复选框并向其中绑定值
//DataGridview绑定数据 public void DataGridViewBandingData() { string year = this.CMB_year.SelectedValue ...
- hightchart or hightstock 格式Y数据
hightchart or hightstock 格式Y数据,鼠标放在上面显示两位小数 方法一: tooltip: { shared: true, crosshairs: true , formatt ...
- entity framework如何控制并发
entity framework如何控制并发 针对字段http://msdn.microsoft.com/en-us/library/vstudio/bb738618(v=vs.100).aspx ...
- CDOJ 631 敢说敢做 记忆化搜索and动规
//跟沈爷学的 传送门http://www.cnblogs.com/Xiper/p/4639636.html #include<cstdio> #include<iostream&g ...
- TLV----Demo讲解
接触过网络协议的人对TLV一定或多或少的知道.作为一种自定义应用层标准. TLV使用十分广泛.他对数据封包有着很好的定义,简单实用. TLV即Type-Length-Value.即我们每个封装成TLV ...
- bzoj 维护序列seq(双标记线段树)
Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 4184 Solved: 1518[Submit][Status][Discus ...
- dojo demo, server验证username是否已经被使用
这个demo有助于理解JS与server的协同工作. 文档结构如上图. 主要是三个文件: main.js table.html validateUserName.jsp (代码见文章末尾) 页面打 ...
- 《github一天一道算法题》:分治法求数组最大连续子序列和
看书.思考.写代码. /*************************************** * copyright@hustyangju * blog: http://blog.csdn. ...
- 使用Web Application Stress Tool 进行压力测试
1.在测试客户端机器上启动Web Application Stress Tool,在弹出的“建立新脚本”对话框中选择“Record”按钮: 2.在“Record”参数设置第一步中,所有的checkbo ...
- mysql binlog解析概要
1,dump协议: 根据数据库的ip+port创建socket,如果创建成功,说明链接建立成功,接下来是使用dump协议订阅binlog 链接建立成功之后,服务端会主动向客户端发送如下问候信息gree ...