Python 获得命令行参数的方法

Python 获得命令行参数的方法

如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?

需要模块:sys

参数个数:len(sys.argv)

脚本名:    sys.argv[0]

参数1:     sys.argv[1]

参数2:     sys.argv[2]

test.py

1importsys

2print"脚本名:", sys.argv[0]

3foriinrange(1,len(sys.argv)):

4print"参数", i, sys.argv[i]

>>>python test.py hello world

脚本名:test.py

参数 1 hello

参数 2 world

python中使用命令行选项:

例如我们需要一个convert.py脚本。它的作用是处理一个文件,并将处理后的结果输出到另一个文件中。

要求该脚本满足以下条件:

1.通过-i -o选项来区别参数是输入文件还是输出文件.

>>> python convert.py -i inputfile -o outputfile

2.当不知道convert.py需要哪些参数时,用-h打印出帮助信息

>>> python convert.py -h

getopt函数原形:

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

convert.py

02importsys, getopt

03opts, args=getopt.getopt(sys.argv[1:],"hi:o:")

04input_file=""

05output_file=""

06

07forop, valueinopts:

08ifop=="-i":

09input_file=value

10elifop=="-o":

11output_file=value

12elifop=="-h":

13usage()

14sys.exit()

代码解释:

a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。

b) "hi:o:": 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。所以"hi:o:"就表示"h"是一个开关选项;"i:"和"o:"则表示后面应该带一个参数。

c) 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。

getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)

长选项格式举例:

--version

--file=error.txt

让一个脚本同时支持短选项和长选项

getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • getopt:和C中的getopt()等价。optparse:2.7后已不推荐使用。argparse:基于optp...
    顾慎为阅读 8,758评论 1 10
  • 需求:在命令行中通过参数控制日志的输出级别 思路分析: 1.如果想要通过命令行传入参数,那么就要在被执行文件中写入...
    古佛青灯度流年阅读 3,320评论 0 0
  • 我们在写一个可变性比较大的脚本时候,很多情况下我们需要传入很多个不同的参数,就像我们在终端输入pip --help...
    迷路的南南见鸟阅读 1,839评论 0 0
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,632评论 1 118
  • 【今日话题】 你人生中遇到的最大的“困难”是什么?你是怎么挺过来的? 回首这么多年来遇到最大的困难 貌似是前年父...
    控心_ebed阅读 158评论 0 0