Simple Package Tool 学习

 

1.getattr内置函数

getattr(object, name[, default])

python Packages.py install -p "$host_ip" -s "$build_series" -v "$build_version" -n "$ne_type" -i "$ini_path" -d "$dir_name" -b "$sw_name" -m "$active_omu" -g "$digi_ip"

Packages.py

 1 ACTION_LIST = ('config', 'install', 'patch', 'burn', 'sync')
2
3 class Packages(object):
4
5   def __init__(self):
6
7     pass;
8
9   def __getattr__(self, arg):
10
11     if arg in ACTION_LIST:
12
13     return getattr(self, 'handle_%s_cmd' % arg)
14
15   raise AttributeError
16
17
18
19 #sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始
20
21 def main(argv=None):
22
23   args = argv[1:]
24
25   action = args[0]
26
27   action_args = args[1:]
28
29  actor = getattr(Packages(), action)(action_args) #getattr()为获取某个类里的某个属性函数等,后面再接括号即为运行该函数
32
33
34
35 if __name__ == "__main__":
36
37   sys.exit(main())

2.optparse模块

from optparse import OptionParser  

parser = OptionParser()  

parser.add_option("-f","--file",dest="filename",help="write report to FILE",metavar="FILE")  

parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True,help="don't print status messages to stdout")  

(options, args) = parser.parse_args() 

3.

    SW-PACKAGE     STATUS   DIRECTORY           ENVIRONMENT          DEF  ACT
PACKAGE-ID (REP-ID) DELIVERY
CD-ID CRND8155 BU CRND81550 CB 15.5-0 - Y
CB 15.5-0 CNR51840 2.7-15 CR2CZ154 NW CR2CZ15444 CB 15.4-44 Y Y
CB 15.4-0 CNR51840 2.7-15 CRE8H154 UT CRE8H1540 CB 15.4-0 - Y
CB 15.4-0 CNR51840 2.7-15 CRPEY154 UT CRPEY15443 CB 15.4-43 - Y
CB 15.4-0 CNR51840 2.7-15

如何将每一行数据和对应的title成键值对输出?

上述数据的特点:每一列的起始位置都是对齐的,因此可以利用这一点,每一列的距离 = 下一列的起始位置 - 该列的起始位置,这样就能将每一列数据获取出来和title对应.

例:我们要获取CRND8155这个值(将该行先定义为line4,第一行定义为line1):line4[line1.index('SW-PACKAGE'):line1.index('STATUS')].strip()

Simple Package Tool 学习的更多相关文章

  1. [Tools] Create a Simple CLI Tool in Node.js with CAC

    Command-line tools can help you with all sorts of tasks. This lesson covers the very basics of setti ...

  2. static wechat red package tool

    ---------------------------------------------------------------------------------------------------- ...

  3. 关于package.json学习

    1.如果要下载npm包,必须有package.json文件,不然会报错,如果缺少必要字符报错,参考报错信息 2.license,指定用户权限,可以不写,不会报错 3.devDependencies,依 ...

  4. java package 包 学习笔记

    编译命令示例: javac -d . Main.java 注:带参数-d自动建立文件目录, 只使用javac 则需要手工创建目录 把 class文件打包 jar命令 jar cvf T.jar *; ...

  5. Debug tool 学习笔记

    GDB调试命令大全 gdb --pid 1235 gdb core.1234 where (bt)    //where the segmentation fault occurred f 1     ...

  6. package[golang]学习笔记之context

    *关于context https://talks.golang.org/2014/gotham-context.slide#29

  7. package[golang]学习笔记之runtime

    *获取当前函数名称,文件名称,行号等信息.通过这个函数配合Println函数可以方便的获取错误信息的位置 var n int //n==0 当前 //n==1 调用函数 //n==2 调用函数的调用函 ...

  8. Scala - 快速学习02 - 搭建开发环境

    1- 下载与安装 下载链接:http://www.scala-lang.org/download/ CMD To run Scala from the command-line, simply dow ...

  9. 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记

    注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...

随机推荐

  1. Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:generate (default-cli) on project : <properties> resource does not exist

    使用mybatis-generator自动生成mapper.dao等文件时,报错如下: org.apache.maven.lifecycle.LifecycleExecutionException: ...

  2. mysq 数据库基本管理

    命令表: 1.设置mysql数据库密码 mysqladmin -u root password 'new-password' 'new-password'为数据库密码. 2.登陆mysql数据库 my ...

  3. runloop - CFRunLoopObserverRef

    1.

  4. 3-QT程序运行时报错E:\SogouInput\6.7.0.0329\程序异常终止,该怎么解决?

    https://bbs.csdn.net/topics/390653779 出现这个错误的原因,使用声明的对象时,没有使用new对对象进行实例化. 包括:数组.

  5. nginx安装及基础配置(含jdk安装及配置)

    0.jdk安装配置 #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz tar -xzf jdk-7u25-linux-x64.tar.gz m ...

  6. cout<<endl 本质探索

    C++中,有一种对象叫操控器(manipulators),专门用来操控stream的对象,在C++标准中,预定义好几种操控器,常见的有: flush 刷新output缓冲区,将内容写入输出设备 end ...

  7. Stripies

    /* Our chemical biologists have invented a new very useful form of life called stripies (in fact, th ...

  8. apt-get clean 清除 apt 的缓存

    #apt-get clean 再 df -h 看看,是不是可用空间增加了几个 G ?

  9. linux下第一个C程序

    首先,用vi编辑器新建一个文件 $vi hi.c 输入以下的程序(怎么用vi不说了) #include <stdio.h> int main() { printf("hello. ...

  10. ORACLE 查看分区表分区大小

    SELECT *  FROM dba_segments t WHERE t.segment_name ='table_name'; pratition_name : 分区名 bytes : 分区大小( ...