首页 > 编程语言 >Python解析命令行参数

Python解析命令行参数

时间:2023-12-30 23:22:05浏览次数:39  
标签:username Python sys -- 参数 命令行 print getopt 解析

Python解析命令行参数

获取命令行参数

在Python中命令行参数通过sys.argv传递,它是一个list类型,其中的元素为字符串。

import sys

def cli_parser():
    print(f"参数个数: {len(sys.argv)}")
    print(f"参数列表:{str(sys.argv)}")
    print(f"脚本名:{sys.argv[0]}")
    for i in range(1, len(sys.argv)):
        print(f"参数{i}:{sys.argv[i]}")
        
if __name__ == "__main__":
    cli_parser()
(base)PS D:\桌面\test\python\test1> python console.py --username tom -p haha123
参数个数: 5
参数列表:['console.py', '--username', 'tom', '-p', 'haha123']
脚本名:console.py
参数1:--username
参数2:tom
参数3:-p
参数4:haha123

解析命令行参数

Python标准库提供了2个模块可用于解析命令行参数,getoptargparse

  • getopt是C函数getopt()的移植,适合C程序员
  • argparse更加智能

使用getopt

getopt --- C 风格的命令行选项解析器 — Python 3.12.1 文档

getopt.getopt 方法用于解析命令行参数列表,语法格式如下:

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

方法参数说明:

  • args: 要解析的命令行参数列表。
  • options: 以字符串的格式定义,options后的冒号(:)表示该选项必须有附加的参数,不带冒号表示该选项不附加参数。
  • long_options: 以列表的格式定义,long_options 后的等号(=)表示如果设置该选项,必须有附加的参数,否则就不附加参数。
  • 该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有---的参数。

抛出异常Exception getopt.GetoptError

  • 在没有找到参数列表,或选项的需要的参数为空时会触发该异常。

  • 异常的参数是一个字符串,表示错误的原因。属性 msg 和 opt 为相关选项的错误信息。

import getopt

def cli_parser():
    """
    命令行参数解析
    """
    username = ""
    password = ""

    try:
        """
            options, args = getopt.getopt(args, shortopts, longopts=[])

            参数args:一般是sys.argv[1:]。过滤掉sys.argv[0],它是执行脚本的名字,不算做命令行参数。
            参数shortopts:短格式分析串。例如:"hp:i:",h后面没有冒号,表示后面不带参数;p和i后面带有冒号,表示后面带参数。
            参数longopts:长格式分析串列表。例如:["help", "ip=", "port="],help后面没有等号,表示后面不带参数;ip和port后面带冒号,表示后面带参数。

            返回值options是以元组为元素的列表,每个元组的形式为:(选项串, 附加参数),如:('-i', '192.168.0.1')
            返回值args是个列表,其中的元素是那些不含'-'或'--'的参数。
        """
        opts, args = getopt.getopt(sys.argv[1:], "hu:p:", ["help", "username=", "password="])
    except getopt.GetoptError:
        print('Error: console.py -u <username> -p <password>')
        print('   or: console.py --username=<username> --password=<password>')
        sys.exit(2)

    # 处理 返回值options是以元组为元素的列表。
    for opt, arg in opts:
        if opt in ("-h", "--help"):
            print('console.py -u <username> -p <password>')
            print('or: console.py --username=<username> --password=<password>')
            sys.exit()
        elif opt in ("-u", "--username"):
            username = arg
        elif opt in ("-p", "--password"):
            password = arg
    print('username为:', username)
    print('password为:', password)

    # 打印 返回值args列表,即其中的元素是那些不含'-'或'--'的参数。
    for i in range(0, len(args)):
        print('参数 %s 为:%s' % (i + 1, args[i]))
        
if __name__ == "__main__":
    cli_parser()

使用argparse

argparse模块用法实例详解 - 知乎 (zhihu.com)

argparse模块提供了ArgumentParser类来构造命令行参数解析器对象,并提供add_argument()成员方法来向这个解析器添加可识别的参数信息格式。解析后的结果通过Namespace类型(一种类似于字典的类型)来返回。

Python中Namespace()函数的作用及例子_from argparse import namespace-CSDN博客

标签:username,Python,sys,--,参数,命令行,print,getopt,解析
From: https://www.cnblogs.com/3to4/p/17937043

相关文章

  • linux部署Python UI自动化项目过程
    1.安装chrome浏览器下载访问谷歌中文网站:GoogleChrome网络浏览器。将页面滑到最下面,点击其他平台,在弹出的页面选择linux选择对应的系统版本进行下载。下载后的deb包默认是arm架构,rpm包默认是x86架构的。所以在选择的时候要对应的系统架构选择安装包,可以通过lscpu查看......
  • Python NumPy 生成随机数的方法及示例
    ​ NumPy是一个强大的库,用于数值计算,包括生成各种随机数。可以使用random.rand()、random.randn()、random.randint()、random.uniform()、random.normal()和random.seed()函数方法生成随机数。本文介绍生成随机数的方法,以及相关的示例代码。1、numpy.random.rand()numpy.ra......
  • Codeforces Round 918 (Div. 4) (前缀和,权值树状数组,二维偏序, python + golang)
    Dashboard-CodeforcesRound918(Div.4)-Codeforces  fromcollectionsimport*defsolve():a,b,c=list(map(int,input().split()))hs=defaultdict(int)hs[a]+=1hs[b]+=1hs[c]+=1foriinhs:ifhs[i]=......
  • 【Python爬虫课程设计】招聘网站数据分析与可视化
    一、选题背景随着互联网的快速发展和信息化时代的到来,招聘网站成为求职者和招聘公司之间最重要的信息交流平台之一。招聘网站上聚集了大量的职位信息、薪资数据和公司信息,这些数据蕴含着丰富的招聘市场和就业趋势的信息,对求职者和招聘公司都具有重要的参考价值。然而,由于招聘网站......
  • appium-python自动开启和关闭服务(win/mac)
    后台启动&关闭appiumserver的命令启动appium:appium-a127.0.0.1-p4723--logxxx.log--local-timezoneAppium服务命令行参数启动appium-p4723指定端口--logxxx.log指定日志保存到指定文件内(可以是绝对路径)--local-timezone指定时间为本地时间--log-levelerror......
  • Python+自动化测试生成HTML报告
    ......
  • 深入解析Linux中的df命令:轻松掌握磁盘空间使用情况
    当我们使用Linux系统时,经常会遇到需要查看磁盘空间使用情况的情况。df命令是一个非常有用的工具,可以帮助我们了解文件系统的磁盘使用情况。在这篇博客文章中,我们将深入探讨df命令的使用方法以及如何解读其输出。什么是df命令?df是磁盘空间查看命令,用于显示文件系统的磁盘使用情况......
  • Python教程(18)——python文件操作详解
    所谓的文件操作是指对计算机中的文件进行读取、写入、修改和删除等操作。简单来说可以分为以下三个部分:打开文件操作文件关闭文件就是这三个简简单单的操作,却在计算机世界占有一席之地。打开文件有各种打开模式,各不相同;操作文件,有读写模式;关闭文件就比较简单了。Python文......
  • 大数据分析与可视化 之 实验01 Python爬虫
    实验01Python爬虫实验学时:2学时实验类型:验证实验要求:必修一、实验目的理解爬虫技术掌握正则表达式、网络编程掌握re、socket、urllib、requests、lxml模块及其函数的使用二、实验要求 分析所需爬取信息网页的源代码,使用re、socket、urllib、requests、lxml模块及其函......
  • Python SciPy 空间数据
    SciPy空间数据https://blog.csdn.net/weixin_64338372/article/details/128675235?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170381772916800222899723%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170381772916800222899......