1.sys.argv

Python中sys.argv是命令行参数从程序外部传值的的一种途径,它是一个列表,列表元素是我们想传进去的的新参数,所以可以用索引sys.argv[]来获得想要的值。因为一个写好的程序一般封装好了,直接在编辑软件里运行就行了,但是程序里面的所有参数我们必须在程序里写好。但是当我们想从程序外部向程序传递我们想要用的参数时,在不改动原来程序的基础上,我们可应通过命令行参数,用dos界面运行程序,然后赋参,即向程序输入新的参数,使程序运行。这里可以用到sys.argv,看个例子;

该程序名字为hello.py

a=sys.argv

print(a)

print(type(a))

因为是程序外部传参,所以用dos界面运行文件。按win+R,输入cmd,打开dos界面,首先进入自己程序所在的文件夹,我的放在

然后,进入文件输入:Python hello.py Hello,按回车。注意,以空格键来分隔输入值

可以看见运行结果,['hello.py', 'Hello']就是sys.argv的值,类型是一个list,分析一下值的组成,sys.argv[0]表示程序文件名,这是个默认值,sys.argv[1]就是我们从外部输入的命令行参数。需要从外部输入更多参数时,输入值之间用空格分隔,如下:

2.geopt.getopt()

Python中getopt.getopt()这个函数是为了从外部输入不同的命令行选项时,对应执行不同的功能。目前有短选项和长选项两种格式。短选项格式为"-"加上单个字母选项;长选项为"--"加上一个单词,同样也是程序外部传参。

语法:getopt.getopt(sys.argv,短选项,长选项)

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

下面摘抄自其他博客:getopt在Python中的使用

在dos界面中书输入的选项的写法要求
  对于短格式,"-"号后面要紧跟一个选项字母。如果还有此选项的附加参数,可以用空格分开,也可以不分开。长度任意,可以用引号。如以下是正确的:
-o
-oa
-obbbb
-o bbbb
-o "a b"
  对于长格式,"--"号后面要跟一个单词。如果还有些选项的附加参数,后面要紧跟"=",再加上参数。"="号前后不能有空格。如以下是正确的:
--help=file1
  而这些是不正确的:
-- help=file1
--help =file1
--help = file1
--help= file1

如何用getopt进行分析
  使用getopt模块分析命令行参数大体上分为三个步骤:

1.导入getopt, sys模块
2.分析命令行参数
3.处理结果

  第一步很简单,只需要:
import getopt, sys

  第二步处理方法如下(以Python手册上的例子为例):
try:
    opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])#长短选项的功能相同,可以随意选择使用
except getopt.GetoptError:
    # print help information and exit:

1. 处理所使用的函数叫getopt(),因为是直接使用import导入的getopt模块,所以要加上限定getopt才可以。
2. 使用sys.argv[1:]过滤掉第一个参数(它是执行脚本的名字,不应算作参数的一部分)。
3. 在函数里,使用短格式分析串"ho:"。当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。所以"ho:"就表示"h"是一个开关选项;"o:"则表示后面应该带一个参数。

函数中的'ho:'表示,在dos界面输入短格式选项‘-h’,并且有附加参数,短选项的附加参数写法如上要求

4. 在函数里,使用长格式,用一个列表包含几个长选项:["help", "output="]。长格式串也可以有开关状态,即后面不跟"="号。如果跟一个等号则表示后面还应有一个参数。这个长格式表示"help"是一个开关选项;"output="则表示后面应该带一个参数。

函数中的["help", "output="],表示在dos界面输入长格式串--help,不附加参数。--output,附加参数。
5. 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。
6. 整个过程使用异常来包含,这样当分析出错时,就可以打印出使用信息来通知用户如何使用这个程序。

 如上面解释的一个命令行例子为:
'-h -o file --help --output=out file1 file2'

  在分析完成后,opts应该是:
[('-h', ''), ('-o', 'file'), ('--help', ''), ('--output', 'out')]

  而args则为:
['file1', 'file2']

第三步主要是对分析出的参数进行判断是否存在,然后再进一步处理。主要的处理模式为:
for o, a in opts:
    if o in ("-h", "--help"):
        usage()
        sys.exit()
    if o in ("-o", "--output"):
        output = a

  使用一个循环,每次从opts中取出一个两元组,赋给两个变量。o保存选项参数,a为附加参数。接着对取出的选项参数进行处理。(例子也采用手册的例子)

例子:文件名为sys_test2.py

import getopt
import sys

opts,args = getopt.getopt(sys.argv[1:],'-h-f:-v',['help','filename=','version'])
print(opts)
for opt_name,opt_value in opts:
    if opt_name in ('-h','--help'):
        print("[*] Help info")
        sys.exit()
    if opt_name in ('-v','--version'):
        print("[*] Version is 0.01 ")
        sys.exit()
    if opt_name in ('-f','--filename'):#当外部输入'-f1'或者'--flilename=1'时,输出为:[('--filename', '3')] \n [*] Filename is  3
        fileName = opt_value
        print("[*] Filename is ",fileName)
        # do something
        sys.exit()

结果:

尤其要讲的是函数返回值

程序中opts,args = getopt.getopt(sys.argv[1:],'-h-f:-v',['help','filename=','version'])
输入的短选项-h本身就是不附带参数的,长选项--filename可以附加参数,上例中附加值为3,可见这个返回值opts=[(('-h,''),('--filename','3'))]
其实这个函数就是为了根据相应的索引传值,比如上面--filename对应传的只就是3.

开源项目:

def help(verbose=False):

print(( 'usage: %s [-c] [-o output] <tty-log-file> <tty-log-file>...' % \
        os.path.basename(sys.argv[0])))

if verbose:
        print('  -c             colorify the output based on what streams are being received')
        print('  -h             display this help')
        print('  -o             write to the specified output file')

if __name__ == '__main__':

settings = {
        'colorify':     0,  #着色
        'output': ""        #输出
        }

try:
        optlist, args = getopt.getopt(sys.argv[1:], 'hco:' )
    except getopt.GetoptError as error:
        sys.stderr.write( '{}: {}\n'.format(sys.argv[0], error))
        help()
        sys.exit(1)

for o, a in optlist:
        if o == '-h': help()
        if o == '-c': settings['colorify'] = True
        if o == '-o': settings['output'] = a

Python 参数传入sys.argv和getopt.getopt()的用法相关推荐

  1. python中的sys.argv是什么?(控制台参数传递、控制台传参)

    引用文章1:sys.argv是什么? - 7sDream的回答 - 知乎 引用文章2:sys.argv是什么? - 磨斯的回答 - 知乎 引用文章3:python 命令行传入参数实现解析 引用文章4: ...

  2. Python 中的 sys.argv 用法

    sys.argv是获取运行python文件的时候命令行参数 下面的代码文件是a.py,当我不用IDE工具,只用命令行窗口运行的时候,进入文件所在目录,输入:python a.py 输出结果如下 imp ...

  3. 关于python 中的 sys.argv 的使用方法

    sys.argv是获取在cmd运行python文件的时候输入的命令行参数,呈现的数据结构是列表的格式 1.用pacharm时运行时的结果是: 输出结果: 2.当我在cmd中输入指令      debu ...

  4. 微课系列(7):Python程序中sys.argv的用法

    技术要点: 1)Python程序中如果使用到了sys.argv,这样的程序一般需要在命令提示符环境中运行,而不是在Python开发环境直接中运行. 2)sys.argv是个包含若干字符串的列表,其中s ...

  5. Python中sys.argv方法的一些典型用法

    本文整理汇总了Python中sys.argv方法的典型用法代码示例. 示例1: weather_icons # 需要导入模块: import sys [as 别名] # 或者: from sys im ...

  6. python将argv作为参数,Python当中的命令行参数sys.argv[]的使用方法

    首先,命令行参数的英语是commond line arguments,这个十分重要,如果考试考到连它的英语都不认识就麻烦大了.命令行参数这个函数的作用是用于接收程序外部的数据和字符串,这些数据和字符串 ...

  7. python getopt.getopt,Python optparser 和getopt

    以下分为 1)python的命令行参数; 2)使用getopt模块处理Unix模式的命令行选项; 3)使用强大的optparser模块处理Unix模式的命令行选项 1). python的命令行参数: ...

  8. Python命令行解析:sys.argv[]函数的简介、案例应用之详细攻略

    Python命令行解析:sys.argv[]函数的简介.案例应用之详细攻略 目录 sys.argv[]函数的简介 sys.argv[]函数的案例应用 1.基础测试 2.进阶用法 3.sys.argv[ ...

  9. Python中 sys.argv[]的用法

    调用解释器时,脚本名和附加参数传入一个名为 sys.argv 的字符串列表.通过执行 import sys可以获取这个列表,sys.argv[0] 表示脚本的名字,sys.argv[1] 代表第一个输 ...

最新文章

  1. python多版本共存使用pip
  2. VS下调用Matlab引擎
  3. AI模型走下高科技神坛、走进大规模量产、深入渗透产业界丨百度研究院2020十大预测...
  4. python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...
  5. 【Python教程】python函数后面有多个括号的作用
  6. 基于FPGA的ADC数据采集蓝牙传输系统
  7. 深度学习的实用层面 —— 1.8 其它正则化方法
  8. Golang:无惧makefile
  9. python基础小结(麻瓜图文总结版)
  10. 白鹭引擎生成html,初识Egret白鹭引擎 之 创建舞台
  11. 涉及到大小变化,类似QScrollArea判断大小是否显示滚动条
  12. html原生js请求
  13. 【FPGA从0开始系列】黑金EP4CE10F17C8开发板按键实验(二)
  14. android expandablelistview横向,Android 的ExpandableListView使用总结--二级展开树结构
  15. php为图片平铺文字水印
  16. 话说js中的异步编程。
  17. 树莓派——步进电机+驱动器 篇
  18. data:image图片转png与jpg,png转data:image格式。
  19. 第五章预习导图部署远程访问服务
  20. 陪伴是最长情的告白,民生保险“链”接万家告白征集

热门文章

  1. iCloud怎么协同作业文? iCloud怎么协同编辑文档?
  2. Snagit安装教程 Snagit 2021主要功能 Snagit 2021 Mac最新版
  3. java面试 泛型_Java面试题五:Java 的泛型, super T 和 extends T 的区别
  4. P1255 数楼梯 方法二(python3实现)
  5. 1.4 编程基础之逻辑表达式与条件分支 16 三角形判断
  6. 是哪个app_互联网app创业哪个比较好
  7. 论文公式编号右对齐_公式对齐(二):公式居中,编号右对齐(MathType 6.9)
  8. 【七】Java面向对象
  9. 简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)
  10. Java笔记-jdbc传输clob到Oracle数据库