Python脚本获取参数的方式

在运维过程中,常常需要自己写脚本,而python往往是最佳的选择。那么怎么获取python脚本的命令行参数呢,例如:

python demo.py a b c

怎么获取命令行参数,a,b,c 呢?可以通过sys库里面的argv来实现, 例如:

$ cat demo.py
#-*- coding: UTF-8 -*-
import os
import sys

def demo():
    print sys.argv
    print len(sys.argv)
    for i in range(len(sys.argv)):
        print "parameter %s --- %s" %(i, sys.argv[i])

if __name__ == "__main__":
    demo() 

$ python demo.py a b c
[‘demo.py‘, ‘a‘, ‘b‘, ‘c‘]
4
parameter 0 --- demo.py
parameter 1 --- a
parameter 2 --- b
parameter 3 --- c

不难看出python是把命令行的参数放在了sys.argv的这个list里面,包括脚本的名字。
但是如果需要命令选项的时候,上面这种方式会显得很吃力,这是可以使用getopt库里的getopt函数,函数的原型为:

getopt.getopt(args, options[, long_options])

第一个参数为:获取的命令行参数,有sys.argv提供,不包括脚本名字
第二个参数为:可以解析的option首字母组成的字符串,后面带有:表示必须要跟参数
第三个参数为:长option,字符串组成的一个list,后面加=表示需要加参数
如下所示:

$ cat demo.py
#-*- coding: UTF-8 -*-
import os
import sys
import getopt

opt, args = getopt.getopt(sys.argv[1:], "ha:b:", [‘apple=‘,‘banana=‘,‘help‘])

print opt

for op,value in opt:
    if op in ("-a", "--apple"):
        print value
    elif op in ("-b", "--banana"):
        print value
    elif op in ("-h", "--help"):
        print "Help info"
        sys.exit()

$ python demo.py -a A --apple A -b B --banana B -h
[(‘-a‘, ‘A‘), (‘--apple‘, ‘A‘), (‘-b‘, ‘B‘), (‘--banana‘, ‘B‘), (‘-h‘, ‘‘)]
A
A
B
B
Help info

*:first-child {
margin-top: 0 !important;
}

body>*:last-child {
margin-bottom: 0 !important;
}

/* BLOCKS
=============================================================================*/

p, blockquote, ul, ol, dl, table, pre {
margin: 15px 0;
}

/* HEADERS
=============================================================================*/

h1, h2, h3, h4, h5, h6 {
margin: 20px 0 10px;
padding: 0;
font-weight: bold;
-webkit-font-smoothing: antialiased;
}

h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {
font-size: inherit;
}

h1 {
font-size: 28px;
color: #000;
}

h2 {
font-size: 24px;
border-bottom: 1px solid #ccc;
color: #000;
}

h3 {
font-size: 18px;
}

h4 {
font-size: 16px;
}

h5 {
font-size: 14px;
}

h6 {
color: #777;
font-size: 14px;
}

body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child {
margin-top: 0;
padding-top: 0;
}

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
margin-top: 0;
padding-top: 0;
}

h1+p, h2+p, h3+p, h4+p, h5+p, h6+p {
margin-top: 10px;
}

/* LINKS
=============================================================================*/

a {
color: #4183C4;
text-decoration: none;
}

a:hover {
text-decoration: underline;
}

/* LISTS
=============================================================================*/

ul, ol {
padding-left: 30px;
}

ul li > :first-child,
ol li > :first-child,
ul li ul:first-of-type,
ol li ol:first-of-type,
ul li ol:first-of-type,
ol li ul:first-of-type {
margin-top: 0px;
}

ul ul, ul ol, ol ol, ol ul {
margin-bottom: 0;
}

dl {
padding: 0;
}

dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding: 0;
margin: 15px 0 5px;
}

dl dt:first-child {
padding: 0;
}

dl dt>:first-child {
margin-top: 0px;
}

dl dt>:last-child {
margin-bottom: 0px;
}

dl dd {
margin: 0 0 15px;
padding: 0 15px;
}

dl dd>:first-child {
margin-top: 0px;
}

dl dd>:last-child {
margin-bottom: 0px;
}

/* CODE
=============================================================================*/

pre, code, tt {
font-size: 12px;
font-family: Consolas, "Liberation Mono", Courier, monospace;
}

code, tt {
margin: 0 0px;
padding: 0px 0px;
white-space: nowrap;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px;
}

pre>code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent;
}

pre {
background-color: #f8f8f8;
border: 1px solid #ccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
}

pre code, pre tt {
background-color: transparent;
border: none;
}

kbd {
-moz-border-bottom-colors: none;
-moz-border-left-colors: none;
-moz-border-right-colors: none;
-moz-border-top-colors: none;
background-color: #DDDDDD;
background-image: linear-gradient(#F1F1F1, #DDDDDD);
background-repeat: repeat-x;
border-color: #DDDDDD #CCCCCC #CCCCCC #DDDDDD;
border-image: none;
border-radius: 2px 2px 2px 2px;
border-style: solid;
border-width: 1px;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
line-height: 10px;
padding: 1px 4px;
}

/* QUOTES
=============================================================================*/

blockquote {
border-left: 4px solid #DDD;
padding: 0 15px;
color: #777;
}

blockquote>:first-child {
margin-top: 0px;
}

blockquote>:last-child {
margin-bottom: 0px;
}

/* HORIZONTAL RULES
=============================================================================*/

hr {
clear: both;
margin: 15px 0;
height: 0px;
overflow: hidden;
border: none;
background: transparent;
border-bottom: 4px solid #ddd;
padding: 0;
}

/* TABLES
=============================================================================*/

table th {
font-weight: bold;
}

table th, table td {
border: 1px solid #ccc;
padding: 6px 13px;
}

table tr {
border-top: 1px solid #ccc;
background-color: #fff;
}

table tr:nth-child(2n) {
background-color: #f8f8f8;
}

/* IMAGES
=============================================================================*/

img {
max-width: 100%
}
-->

Python脚本获取参数的方式,布布扣,bubuko.com

时间: 2024-10-03 22:47:45

Python脚本获取参数的方式的相关文章

Shell 获取参数的方式

写shell脚本的时候,往往需要从外部获取参数,例如: $ sh demo.sh a 那么如何将上面的参数a传到shell程序里面呢. 最常用的是,$0 $1... $10,这些位置变量 其中$0是shell程序的名字,$1,$2...分别为第一个参数,第二个参数... 我们demo.sh 如下所示: $ cat demo.sh #! /bin/bash cat << EOF Usage: sh $0 $1 EOF $ sh demo.sh a Usage: sh demo.sh a $开头的

shell调用python脚本,并且向python脚本传递参数

1.shell调用python脚本,并且向python脚本传递参数: shell中: python test.py $para1 $para2 python中: import sys def main($canshu1, $canshu2) ..... main(sys.argv[1], sys.argv[2]) 2.使用shell调用python中的函数: python脚本如下: test.py: import ConfigParser config = ConfigParser.Config

python DRF获取参数介绍

DRF获取参数的方式 例如url url(r'^demo/(?P<word>.*)/$', DemoView.as_view()) 在类视图中获取参数 url:http://127.0.0.1:8000/demo/aaa/?bbb=bbb&ccc=ccc&ccc=CCC form:{"body":"body"} JSON:{"body":"body"} class DemoView(APIView)

对于shell脚本获取参数的一些小技巧

问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i  取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$($i)的意思来取到第几个参数,当然$($i)是不好用的 当时纠结了好久,最后上百度提问,两位高手给出了答案: 1) #!/bin/sh NUMBER=$# echo $NUMBER i=1 while [ $i -le $NUMBER ] do a[$i]=$1 #将数组a[i]赋值为$1,即取

python脚本——获取系统当前时间与前一天的时间

python脚本中很多时候需要自动获取系统的当前时间和前一日的时间,如果为了获得前一日的时间,只是单纯的取出当前的系统时间(字符串类型),转为整型之后减1,再转换为字符串类型,是不可行的,当月初的时间将会出现0天,比如12月1日会变成12月0日,合理的做法应当让其自动向前推一天. 如下: 1.python里获取当前时间有一个time属性import timeTIME_NOW = time.strftime('%Y%m%d') 或TIME_NOW = time.strftime("%Y%m%d&q

python 脚本传递参数

给python程序传递参数 运行python脚本时有时需要执行实传递参数 在linux下: [[email protected] ~]# cat /opt/python.py #!/usr/local/bin/python # -*- coding:utf-8 -*- import sys print(sys.argv[0]) #sys.argv[0] 类似于shell中的$0,但不是脚本名称,而是脚本的路径 print(sys.argv[1]) #sys.argv[1] 表示传入的第一个参数,

python脚本获取时间格式

来源 Python中获取当前日期的格式:https://www.cnblogs.com/wenBlog/p/6023742.html #!/usr/bin/python # -*- coding: utf-8 -*- import time print (time.strftime("%H:%M:%S")) ## 12 hour format ## print (time.strftime("%I:%M:%S")) import time print (time.s

使用python脚本,调用post方式监控服务器状态

公司一台app服务器需要监控状态.开发人员要求使用post方式(json格式参数),查看服务器返回状态.才能确定服务器是否正常.使用get方式是不行的. 我采用python写个脚本监控.过程如下: 创建key: [[email protected] zabbix_agentd.conf.d]# cat httppost.conf UserParameter=http.post,/usr/bin/python /etc/zabbix/scripts/httppost.py 测试key: [[ema

利用Python脚本获取Windows和Linux的系统版本信息

查看系统版本信息是一件家常便饭的事情,有时候需要将版本信息录入到资产管理系统中,如果每次手动的去查询这些信息再录入系统那么是一件令人呢头疼的事情,如果采用脚本去完成这件事情,那么情况就有所不同了. 在Python的世界里,获取Windows版本信息和Linux的版本信息都可以采用platform模块,但platform模块也不是万能的,有些特殊的信息(比如Windows的内部版本号)这个模块拿不到,那么只能另辟蹊径了. 在Linux系统中,可以简单的认为一切都是文件,那么就算没有现成的命令可用时