Python中三种命令行参数利用方式详解

 更新时间:2023年12月26日 09:18:17   作者:ju_ju_bone  
Python的命令行参数,提供了很多有用的功能,可以方便调试和运行,这篇文章主要给大家介绍了关于Python中三种命令行参数利用方式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、sys.argv介绍

1.使用方法

我们可以通过导入 sys 模块来使用 sys.argv,这个模块提供了一个名为 argv 的列表,保存了命令行中传递的所有参数。在代码中可以通过 sys.argv[i] 来获取第 i 个参数的值,其中 i 从 0 开始计数,也就是说 sys.argv[0] 存储的是 Python 脚本本身的名称。

2.案例1

print("程序名:",sys.argv[0])
print("第一个参数:",sys.argv[1])
print("第二个参数:",sys.argv[2])
print("第三个参数:",sys.argv[3])

执行结果:

3.案例2——读取文件内容

假设我们有一个程序需要读取一个文件名,并且对文件进行操作,这时候我们可以使用 sys.argv 来避免在代码中写死文件名。

if len(sys.argv) < 2:
    print("usafe: python sysArgv.py filename")
    sys.exit()

filename = sys.argv[1]
try:
    with open(filename,'r') as f:
        print(f.read())
except:
    print("文件不存在")
    sys.exit()

执行结果:

二、getopt

1.案例1

使用 sys.arg[1:]是为过滤第一个参数(第一个参数为Pylhon程序本身)

1、“-u:-p:” 为定义短格式选项(-)。这里的p和u为两个选项,u后面有“:”必须有选项值。

2、[“file="] 为定义长格式选项(–)。这里的“=”和上面的短格式选项中的“:”一样,后面必须有选项值。

getopt是对sys.argv获取的命令行参数进行二次处理。在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能,比如-u代表后面是用户,-p代表后面是密码。调用getopt.getopt()会返回两个列表,第一个列表赋值给opts,第二个列表赋值给args:

1、opts:是(选项,选项值)的元组为一个元素的列表。如果没有选项值为空字符串

2、args: 存放没用选项单参数的列表。不属于格式信息的剩余的命令行参数:

import sys
import getopt

opts,argv = getopt.getopt(sys.argv[1:],'-u:-p:',["file="])
print("opts输出结果为:",opts)
print("args输出结果为:",argv)

2.案例2——读取文件内容

简单实例:

import sys
import getopt

def usage():
    print('-h: --help 帮助;')
    print('--file=文件名')

def read(filename):
    try:
        with open(filename, 'r') as f:
            print(f.read())
    except:
        print("文件不存在")
        sys.exit()

def start(argv):
    file = ""
    if len(argv)<1:
        print("-h 获取帮助信息")
        sys.exit()
    opts, argvs = getopt.getopt(argv, '-h', ["file="])

    for opt,arg in opts:
        if opt == "-h":
            usage()
        elif opt == "--file":
            read(arg)

if __name__ == '__main__':
    start(sys.argv[1:])

运行结果:

三、optparse

案例1

optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数,与getopt函数不同的是optparse可以自动生成帮助信息。

type=: 表示输入命令行参数的值的类型,默认为string,可以指定为string, int, choice, float,complex其中一种;

import optparse

def start():
    usage = "python %prog -u/--user <target user> -p/--password <target password>"
    parser = optparse.OptionParser(usage)
    parser.add_option('-u', '--user', dest='User', type='string', help='target user', default='root')
    parser.add_option('-p', '--password', dest='Pwd', type='string', help='target password')
    options, args = parser.parse_args()

    print("用户名为", options.User)
    print("密码为", options.Pwd)

if __name__ == '__main__':
    try:
        start()
    except KeyboardInterrupt:
        print("interrupted by user, killing all threads...")

案例2——读取文件内容

import optparse
import sys

def read(filename):
    try:
        with open(filename, 'r') as f:
            print(f.read())
    except:
        print("文件不存在")
        sys.exit()

def start():
    usage = "python %prog -u/--user <target user> -p/--password <target password> -f/--file <target file>"
    parser = optparse.OptionParser(usage)
    parser.add_option('-u', '--user', dest='User', type='string', help='target user', default='root')
    parser.add_option('-p', '--password', dest='Pwd', type='string', help='target password')
    parser.add_option('-f','--file', dest='Filename',type='string',help='write report to FILE', metavar='FILE',default='123.txt')
    print(parser.parse_args())
    options, args = parser.parse_args()

    print("用户名为", options.User)
    print("密码为", options.Pwd)
    print("文件为",options.Filename)
    # for option,arg in parser.parse_args():
    #     if option.Filename == '-f':
    read(options.Filename)

if __name__ == '__main__':
    try:
        start()
    except KeyboardInterrupt:
        print("interrupted by user, killing all threads...")

  • default=: 表示命令参数的默认值;
  • Metavar=: 显示到帮助文档中用来提示用户输入期望的命令参数;
  • dest=:指定参数在options对象中成员的名称,如果没有指定dest参数,将用命令行参数名来对options对象的值进行存取。
  • help=: 显示在帮助文档中的信息;

四、argparse

argparse是optparse的升级版本,与optparse相比,argparse使用更加简单

案例1

import argparse

'''
argparse.ArgumentParser().add_argument参数:
1、可以设置多个选项字符串,比如上面的'-u','--user'这两个,用的时候任选其一;
2、type用于检测命令行输入参数的数据类型是否符合要去,有string、int、float等类型;
3、dest=用于定义选项存放的位置,作为后面的第一个字典(options)的键,值为命令行输入的参数;
4、help用于定义帮助信息;
5、default设置默认值
'''
parse = argparse.ArgumentParser()
parse.add_argument('-u', '--user', dest='User', type=str, help='target user', default='root')
parse.add_argument('-s','--sex',dest='Sex',type=str,choices=['男','女'],default='男',help='target sex')
parse.add_argument('-n','--number',dest='Num',required=True,type=int,default='target two number')
print(parse.parse_args().User,parse.parse_args().Sex,parse.parse_args().Num)

案例2——读取文件内容

import sys,argparse

def read(filename):
    try:
        with open(filename, 'r') as f:
            print(f.read())
    except:
        print("文件不存在")
        sys.exit()
def start():
    parse = argparse.ArgumentParser()
    parse.add_argument('-u', '--user', dest='User', type=str, help='target user', default='root')
    parse.add_argument('-s','--sex',dest='Sex',type=str,choices=['男','女'],default='男',help='target sex')
    parse.add_argument('-n','--number',dest='Num',required=True,nargs=1,type=int,default='target two number')
    parse.add_argument('-f','--file',dest='File',type=str,default='123.txt')
    print(parse.parse_args().User,parse.parse_args().Sex,parse.parse_args().Num,parse.parse_args().File)
    read(parse.parse_args().File)
if __name__ == '__main__':
    start()

总结

argparse比较常用

到此这篇关于Python中三种命令行参数利用方式详解的文章就介绍到这了,更多相关Python命令行参数利用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)

    python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)

    这篇文章主要介绍了python opencv 图片缺陷检测,主要讲解直方图以及相关系数对比法,本文通过实例截图给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • python腾讯语音合成实现过程解析

    python腾讯语音合成实现过程解析

    这篇文章主要介绍了python腾讯语音合成实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python线程池thread pool创建使用及实例代码分享

    Python线程池thread pool创建使用及实例代码分享

    这篇文章主要介绍了Python线程池(thread pool)创建使用及实例代码分享,文章围绕主题展开详细的内容介绍具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Prometheus开发中间件Exporter过程详解

    Prometheus开发中间件Exporter过程详解

    这篇文章主要介绍了Prometheus开发中间件Exporter过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python多进程共享Array问题

    python多进程共享Array问题

    multiprocessing库提供了Array类,允许在多个进程间共享数组,Array在共享内存中创建,各进程可直接访问和修改其元素,实现数据同步,Array支持多种数据类型,可选锁定参数以保证数据安全
    2024-09-09
  • Python+Pandas 获取数据库并加入DataFrame的实例

    Python+Pandas 获取数据库并加入DataFrame的实例

    今天小编就为大家分享一篇Python+Pandas 获取数据库并加入DataFrame的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • pandas中的DataFrame按指定顺序输出所有列的方法

    pandas中的DataFrame按指定顺序输出所有列的方法

    下面小编就为大家分享一篇pandas中的DataFrame按指定顺序输出所有列的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python 基础知识之字符串处理

    Python 基础知识之字符串处理

    这篇文章主要介绍了Python 基础知识之字符串处理的相关资料,这里对字符串的判断,搜索匹配及字符串变换进行了详解,需要的朋友可以参考下
    2017-01-01
  • minconda安装pytorch的详细方法

    minconda安装pytorch的详细方法

    这篇文章主要介绍了minconda安装pytorch的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 解决Python2.7中IDLE启动没有反应的问题

    解决Python2.7中IDLE启动没有反应的问题

    今天小编就为大家分享一篇解决Python2.7中IDLE启动没有反应的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11

最新评论