怎样用编程语言解析参数

    作者:课课家教育更新于: 2019-08-02 10:16:32

    大神带你学编程,欢迎选课

    Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

    如果你在使用 Python 进行开发,你可能会在终端中使用命令,即使只是为了启动 Python 脚本或使用 pip 安装 Python 模块。

    怎样用编程语言解析参数_编程语言_Python_Python教程_课课家

    使用 argparse 模块像专业人士一样解析参数。

    如果你在使用 python 进行开发,你可能会在终端中使用命令,即使只是为了启动 Python 脚本或使用 pip 安装 Python 模块。命令可能简单而单一:

    1. $ ls

    命令也可能需要参数:

    1. $ ls example

    命令也可以有选项或标志:

    1. $ ls--color example

    有时选项也有参数:

    1. $ sudo firewall-cmd  --list-all --zone home

    参数

    POSIX shell 会自动将你输入的内容作为命令分成数组。例如,这是一个简单的命令:

    1. $ ls example

    命令 ls 的位置是 $0,参数 example 位置是 $1

    可以写一个循环迭代每项。确定它是否是命令、选项还是参数。并据此采取行动。幸运的是,已经有一个名为argparse 的模块。

    argparse

    argparse 模块很容易集成到 Python 程序中,并有多种便利功能。例如,如果你的用户更改选项的顺序或使用一个不带参数的选项(称为布尔,意味着选项可以打开或关闭设置),然后另一个需要参数(例如 --color red),argparse 可以处理多种情况。如果你的用户忘记了所需的选项,那么 argparse 模块可以提供友好的错误消息。

    要在应用中使用 argparse,首先要定义为用户提供的选项。你可以接受几种不同的参数,而语法一致又简单。

    这是一个简单的例子:

    1. #!/usr/bin/env python
    2. import argparse
    3. import sys
    4.  
    5. def getOptions(args=sys.argv[1:]):
    6.     parser = argparse.ArgumentParser(description="Parses command.")
    7.     parser.add_argument("-i","--input", help="Your input file.")
    8.     parser.add_argument("-o","--output", help="Your destination output file.")
    9.     parser.add_argument("-n","--number", type=int, help="A number.")
    10.     parser.add_argument("-v","--verbose",dest='verbose',action='store_true', help="Verbose mode.")
    11.     options = parser.parse_args(args)
    12.     return options

    此示例代码创建一个名为 getOptions 的函数,并告诉 Python 查看每个可能的参数,前面有一些可识别的字符串(例如 --input 或者 -i)。 Python 找到的任何选项都将作为 options对象从函数中返回(options 是一个任意名称,且没有特殊含义。它只是一个包含函数已解析的所有参数的摘要的数据对象)。

    默认情况下,Python 将用户给出的任何参数视为字符串。如果需要提取整数(数字),则必须指定选项 type=int,如示例代码中的 --number 选项。

    如果你有一个只是关闭和打开功能的参数,那么你必须使用 boolean 类型,就像示例代码中的 --verbose 标志一样。这种选项只保存 True 或 False,用户用来指定是否使用标志。如果使用该选项,那么会激活 stored_true

    当 getOptions 函数运行时,你就可以使用 options 对象的内容,并让程序根据用户调用命令的方式做出决定。你可以使用测试打印语句查看 options 的内容。将其添加到示例文件的底部:

    1. print(getOptions())

    然后带上参数运行代码:

    1. $ python3 ./example.py -i foo -n 4
    2. Namespace(input='foo', number=4, output=None, verbose=False)

    检索值

    示例代码中的 options 对象包含了用户提供的选项后面的值(或派生的布尔值)。例如,在示例代码中,可以通过 options.number 来检索 --number

    1. options = getOptions(sys.argv[1:])
    2.  
    3. if options.verbose:
    4.     print("Verbose mode on")
    5. else:
    6.     print("Verbose mode off")
    7.  
    8. print(options.input)
    9. print(options.output)
    10. print(options.number)
    11.  
    12. #这里插入你的Python代码

    示例中的布尔选项 --verbose 是通过测试 options.verbose 是否为 True(意味着用户使用了 --verbose 标志)或 False(用户没有使用 --verbose 标志),并采取相应的措施。

    帮助和反馈

    argparse 还包含一个内置的 --help(简写 -h)选项,它提供了有关如何使用命令的提示。这是从你的代码派生的,因此生成此帮助系统不需要额外的工作:

    1. $ ./example.py --help
    2. usage: example.py [-h][-i INPUT][-o OUTPUT][-n NUMBER][-v]
    3.  
    4. Parses command.
    5.  
    6. optional arguments:
    7.   -h,--help            show this help message andexit
    8.   -i INPUT,--input INPUT
    9.                         Your input file.
    10.   -o OUTPUT,--output OUTPUT
    11.                         Your destination output file.
    12.   -n NUMBER,--number NUMBER
    13.                         A number.
    14.   -v,--verbose         Verbose mode.

    像专业人士一样用 Python 解析

    这是一个简单的示例,来演示如何在 Python 应用中的解析参数以及如何快速有效地记录它的语法。下次编写 Python 脚本时,请使用 argparse 为其提供一些选项。你以后会感到自得,你的命令不会像一个快速的临时脚本,更像是一个“真正的” Unix 命令!

    以下是可用于测试的示例代码:

    1. #!/usr/bin/env python3
    2. # GNU All-PermissiveLicense
    3. #Copyingand distribution of thisfile,withor without modification,
    4. # are permitted in any medium without royalty provided the copyright
    5. # notice andthis notice are preserved.  Thisfileis offered as-is,
    6. # without any warranty.
    7.  
    8. import argparse
    9. import sys
    10.  
    11. def getOptions(args=sys.argv[1:]):
    12.     parser = argparse.ArgumentParser(description="Parses command.")
    13.     parser.add_argument("-i","--input", help="Your input file.")
    14.     parser.add_argument("-o","--output", help="Your destination output file.")
    15.     parser.add_argument("-n","--number", type=int, help="A number.")
    16.     parser.add_argument("-v","--verbose",dest='verbose',action='store_true', help="Verbose mode.")
    17.     options = parser.parse_args(args)
    18.     return options
    19.  
    20. options = getOptions(sys.argv[1:])
    21.  
    22. if options.verbose:
    23.     print("Verbose mode on")
    24. else:
    25.     print("Verbose mode off")
    26.  
    27. print(options.input)
    28. print(options.output)
    29. print(options.number)
      Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

课课家教育

未登录