python获取命令行输入参数列表的实例代码
作者:Victor_Lv_ 发布时间:2022-02-26 15:48:41
(一)单一独立的参数
如果命令行输入的参数都是各自单一独立的,直接用个循环把所有参数逐一读出来就行了。sys模块里面直接用args = sys.argv就可以获取到所有参数了(返回值args是一个list),args0]是执行的python文件路径名,args[1:]后面的才是真正命令行输入的参数,用个for循环就可以一一读取args列表,示例代码如下:
import sys
def usage():
print """
This is usage.
This is usage.
This is usage.
"""
def main(argv):
for arg in argv[1:]:
if arg == '-t':
pass
elif arg == '-h' or arg == '--help':
usage()
sys.exit()
elif arg == '-p':
pass
else:
print "Error: invalid parameters"
sys.exit()
if __name__ == '__main__':
main(sys.argv)
(二)参数结合
如果要读取:-t mytest 这样的组合参数,上面的方法就行不通了,在shell里面有shift可以直接移到下一个参数,但在python没有shift的功能,所以得换种方式。
一种方法是用getopt模块(官方文档关于getopt的解释:点击打开链接):getopt模块里面的getopt函数可以指定参数可能的类型并且获取所有参数。
用法:
getopt.getopt(args, options[, long_options])
options参数指定短式输入,也就是单横杠"-",例如"-h",long_options是可选的,用于指定长式输入,也就是双横杠"--",例如"--help"。如果是单一参数输入,options和long_options都只需要直接写参数名,例如下面这句代码指定两个单一参数:-h/--help -t/--test:
opts, args = getopt.getopt(sys.argv[1:], 'ht', ['help', 'test''])
如果是后面还要继续接参数的,options要在参数名后面加冒号":",long_options要在参数名后面加等号"=",例如下面这句代码指定三个参数:-h/--help -t/--test -r path / --root path:
opts, args = getopt.getopt(sys.argv[1:], 'htr:', ['help', 'test','root='])
getopt函数的返回值有两个,一般只用第一个,如下面的代码,第一个返回值opts :" is a list of (option, value) pairs",也就是一个 -t mytest 这样的元素对,当然如果-t后面不需要再接参数的话,那就没有value值了。利用这个pairs返回值,我们可以用个for循环获取参数,不管是单一独立的参数,还是结合的参数,都可以,示例代码如下:
import sys
import getopt
def usage():
print """
This is usage.
This is usage.
This is usage.
"""
def main(argv):
try:
opts, args = getopt.getopt(sys.argv[1:], 'm:p:h', ['miner=', 'params=', 'help'])
except getopt.GetoptError:
usage()
sys.exit()
for opt, arg in opts:
if opt in ['-h', '--help']:
pass
elif opt in ['-t', '--test']:
pass
elif opt in ['-p', '--path']:
param = arg
print param
sys.exit()
else:
print "Error: invalid parameters"
usage()
sys.exit()
if __name__ == '__main__':
main(sys.argv)
另外,还有个知识点就是,如果想要print一大段string怎么办,用三个双引号包住即可,如上面的代码中usage函数,并且要注意的是三双引号里面的内容不用缩进,直接从最开头开始写,否则会导致出错。
来源:https://blog.csdn.net/Lv_Victor/article/details/70699497


猜你喜欢
- 一、 前提:有Google账号(具体怎么注册账号这里不详述,大家都懂的,自行百度)在你的Google邮箱中关联好colab(怎样在Googl
- sync.WaitGroup对于Golang开发者来说并不陌生,其经常作为多协程之间同步的一种机制。用好它势必会让你事半功倍,但是一旦错用将
- 前言subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准
- 你是怎么把密码储存到数据库里?是以纯文字的方式?你可知道这对安全的危险性?当攻击你网站的人能开启数据库浏览,以纯文字方式存在数据库里的密码一
- 要真说出来哪一个函数能够做得到,还真难。但我们可用下面的代码来进行识别,返回“假”即偶数,返回“真”则奇数: function&n
- 批处理可以很方便地和其它各种语言混合编程,除了好玩,还有相当的实用价值,比如windows版的ruby gem包管理器就是运用了批处理和ru
- 网上有很多关于Python+opencv人脸检测的例子,并大都附有源程序。但是在实际使用时依然会遇到这样或者那样的问题,在这里给出常见的两种
- 前言在日常前端开发中, 经常会遇到频繁发起的重复请求, 会给服务器及网络造成不必要的压力, 可通过取消重复请求解决场景订单数据条件筛选查询表
- 概述具体的案例描述在此就不多赘述. 同一数据集我们在机器学习里的随机森林模型中已经讨论过.导包import numpy as npimpor
- 内容摘要:本文是一篇实例讲解的文章。作为一个普通的程序员,我深知,一个优秀的例程,对于正在学习编程的人是多么的有帮助。本文中使用的例程,是一
- 一、find_element_by_id()find_element_by_id()1.从上面定位到的元素属性中,可以看到有个id属性:id
- 本文实例讲述了JS实现键值对遍历json数组功能。分享给大家供大家参考,具体如下:<!DOCTYPE html><html
- Matrix是Array的一个小的分支,包含于Array。所以matrix 拥有array的所有特性。但在数组乘和矩阵乘时,两者各有不同,如
- 如下所示:#ltp_data 字符串 写进777.txt1、def save(filename, contents): fh = open(
- 1、表示乘号2、表示倍数,例如:def T(msg,time=1): print((msg+' ')*time)
- 一、删除字符串两端的一种或多种字符#strip()、lstrip()、rstrip()方法;(默认删除空格符)A、list.strip(字符
- 本文介绍python操作excel的方法(xlsxwriter包的使用),具体内容如下xlsxwriter包的安装pip install x
- 对有自增长字段的表导入数据注意事项: 1、把自增长字段暂时设置成非自增长的;导入数据成功后,再设置成自增长字段。 2、导出、导入数据时,注意
- 一、 通过runtime包进行多核设置1.NumCPU()获取当前系统的cpu核数2.GOMAXPROCS设置当前程序运行时占用的cpu核数
- 代码如下:td=date() '此次为设置当前日期,主要是为了调试方便,实际应用中可以使用当天日期.. str=