Python脚本获取参数的方式

摘要:
在操作和维护过程中,Python脚本经常需要编写自己的脚本来获取参数,而Python往往是最佳选择。

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

免责声明:文章转载自《Python脚本获取参数的方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于jQuery的tooltips插件--poshytip(转)Three.JS学习 9:WEBVR 入门demo下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python django 连接 sql-server

1.准备工作 python3.6连接sqlserver数据库需要引入pymssql模块 pymssql官方:https://pypi.org/project/pymssql/ 没有安装的话需要: pip安装: pip install pymssql   2.连接数据库 首先你得明确目标数据库的:'服务器名称',"账户名称","密码","数据库名称"...

实现crontab定时调用python脚本,以及command not found的问题

操作 1.修改 /etc/crontab文件调用python脚本和其他sh的不同是:需要写清楚调用哪个python解释器例如:* 12 * * * root /usr/bin/python /home/admin/test.py 需要用/usr/bin/python 全路径指定.另外需要在此前写root 表示调用账户.2.增加日志使用/home/admin...

Python股票历史数据的获取

获取股票数据的接口很多,免费的接口有新浪、网易、雅虎的API接口,收费的就是证券公司及相应的公司提供的接口。收费试用的接口一般提供的数据只是最近一年或三年的,限制比较多,除非money足够多。所以本文主要讨论的是免费数据的获取及处理。 国内提供股票数据的接口如sinajs,money.163.com,yahoo,它们提供的API接口不同,每家提供的数据大同...

使用python爬虫爬取股票数据

前言: 编写一个爬虫脚本,用于爬取东方财富网的上海股票代码,并通过爬取百度股票的单个股票数据,将所有上海股票数据爬取下来并保存到本地文件中 系统环境: 64位win10系统,64位python3.6,IDE位pycharm 预备知识: BeautifulSoup的基本知识,re正则表达式的基本知识 代码: importrequests from bs4 i...

Python实现多线程调用GDAL执行正射校正

python实现多线程参考http://www.runoob.com/python/python-multithreading.html #!/usr/bin/env python#coding:utf-8# #Description:# # #Author: LC#Date: # try: from osgeo importgdal except...

python——多线程与线程锁

一、概念: 进程:对系统过来说,一个任务是一个进程; 线程:线程是包含在进程中。进程中,线程来工作,线程是最小的单位。一个进程可以启多个线程 二、进程和线程使用时的选择: 1.cpu密集型任务,用进程 #比如排序、计算的功能2.IO密集型任务,多线程 input Output #读写频繁,网络IO或者磁盘IO。浪费CPU比较少的用多线程3.如果需要读写也需...