首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python获取命令行参数

在很多情况情况下,使用的python脚本是需要根据需求设定数值的,但是每次都跑到py脚本里更改源码会显得非常的愚蠢,而且很容易出问题,所以我们需要从命令行获取所需的参数。

python中获取命令行参数的方法有很多,早先的sys模块的argv就是其中之一,而后的getopt模块的getopt方法,以及今天重点讲的argparse模块。

这里对于只需要一个参数(一般是文件名)的脚本,使用argv会比较方便。对使用多个参数的脚本,推荐使用argparse模块,更加方便和易懂。

sys模块

在sys模块中,使用sys.argv即可获取命令行参数

首先创建一个test.py的文件,其中代码如下:

在如下命令中,sys.argv会获取命令行中的三个参数+文件名,所以 len(sys.argv)=4。很容易看出循环接下来要打印sys.argv[1]、sys.argv[2]、sys.argv[3]这三个值。

因为命令行参数顺序的问题使得使用时比较麻烦,而且对也没有参数提示,在有多个参数的时刻显得比较无力,但是对单一参数时,比如只需要文件名时,就可以很轻易的使用sys.argv[1]获取文件名

argparse模块

这里不讲getopt,因为argparse比他好用很多。

argparse使用过程比较简单,首先实例化一个argparse.ArgumentParser()对象,然后往对象中add设定的参数,然后将参数返回到一个命名空间中,最后赋给对应的变量。具体代码如下:

测试:

这里我设定了定位参数x,并在最后赋给了x,并将x打印出来,可以看到,我在使用 -h参数后,argparse会自动将帮助文档显示出来。

以上是对单一没有指定参数的设定,但是很多时候,我们的py脚本的参数会很多,所以经常看到有人用。这里使用短参数来获取命令行参数,这样就不会怕顺序搞错了导致脚本出错。

以上是我脚本中参数设置的一部分,这里我向脚本中添加了三个可选参数,每个参数都既写了短参数也写了长参数,同时我在help中写了每个参数的帮助文档。size是我的可选参数,默认值为 100,也可通过-s参数进行修改。对于每一个参数我都利用type设置了数据类型,防止格式出错。

执行情况:

这里我图简单所以最后执行时只打印了size,因为是可选参数,所以没有输入inputfile和outputfile也没有关系,但是如果在正常脚本里,这里是会用到inputfile和outputfile的,程序就会出错。如果想要在最开始就提示输入的话,可以使用第一个定位参数,或者在脚本中写上判断inputfile是否为空值的条件,若为空值则跳出程序并打印错误。

以上是argparse的基础操作,剩下还有更多的详情我就不一一赘述,详情可以前往https://www.jianshu.com/p/fef2d215b91d

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180123G0WRPZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券