python参数解析_使用Python解析参数

python参数解析

如果您正在使用Python进行大量开发,那么即使只是启动Python脚本或使用pip安装Python模块,您也可能已经在终端中发出了命令。 命令可能很简单也很单数:

 $  ls 

命令也可能带有一个参数:

 $  ls example 

命令还可以具有选项或标志:

 $  ls --color example 

有时选项也有参数:

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

争论

POSIX Shell会自动将您作为命令键入的任何内容拆分为一个数组。 例如,这是一个简单的命令:

 $  ls example 

命令ls在位置$ 0 ,参数示例在位置$ 1

可以编写一个循环来遍历每个项目。 确定是命令,选项还是参数; 并采取相应措施。 幸运的是,已经有一个名为argparse的模块。

精氨酸

argparse模块易于集成到您的Python程序中,并具有一些便利功能。 例如,如果您的用户更改了选项的顺序或使用了一个不带任何参数的选项(称为Boolean ,这意味着该选项将设置切换为开或关),然后又需要一个带参数的选项(例如--color red ,例如),argparse可以处理各种变化。 如果您的用户忘记了所需的选项,则argparse模块可以提供友好的错误消息。

在应用程序中使用argparse首先定义要向用户提供的选项。 您可以接受几种不同类型的参数,但是语法是一致且简单的。

这是一个简单的例子:


   
   
#!/usr/bin/env python
import argparse
import sys

def getOptions ( args = sys . argv [ 1 : ] ) :
    parser = argparse. ArgumentParser ( description = "Parses command." )
    parser . add_argument ( "-i" , "--input" , help = "Your input file." )
    parser . add_argument ( "-o" , "--output" , help = "Your destination output file." )
    parser . add_argument ( "-n" , "--number" , type = int , help = "A number." )
    parser . add_argument ( "-v" , "--verbose" , dest = 'verbose' , action = 'store_true' , help = "Verbose mode." )
    options = parser . parse_args ( args )
    return options

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

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

如果您有一个仅打开或关闭功能的参数,则必须使用布尔类型,如示例代码中的--verbose标志一样。 这种类型的选项仅存储TrueFalse ,指定用户是否使用了该标志。 如果使用该选项,则将激活stored_true

一旦运行getOptions函数,就可以使用options对象的内容,并使程序根据用户如何调用命令来做出决定。 您可以通过测试打印语句查看选项的内容。 将其添加到示例文件的底部:

 print ( getOptions ( ) ) 

然后使用一些参数运行代码:


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

检索值

示例代码中的options对象包含以long选项命名的键中用户提供的任何值(或派生的布尔值)。 例如,在示例代码中,可以通过查看options.number来检索--number选项。


   
   
options = getOptions ( sys . argv [ 1 : ] )

if options. verbose :
    print ( "Verbose mode on" )
else :
    print ( "Verbose mode off" )

print ( options. input )
print ( options. output )
print ( options. number )

# Insert Useful Python Code Here...

布尔选项,在本例中--verbose,通过测试options.verbose是否为真(即用户没有使用--verbose标志)或False(用户没有使用--verbose标志)回吐决定,相应地采取一些行动。

帮助和反馈

Argparse还包括一个内置的--help (简称-h )选项,该选项提供了有关如何使用该命令的有用提示。 这是从您的代码派生的,因此无需花费额外的精力即可生成此帮助系统:


   
   
$ ./example. py -- help
usage: example. py [ -h ] [ -i INPUT ] [ -o OUTPUT ] [ -n NUMBER ] [ -v ]

Parses command.

optional arguments:
  -h , -- help            show this help message and exit
  -i INPUT , -- input INPUT
                        Your input file .
  -o OUTPUT , --output OUTPUT
                        Your destination output file .
  -n NUMBER , --number NUMBER
                        A number.
  -v , --verbose         Verbose mode.

像专业人士一样解析Python

这个简单的示例演示了如何处理Python应用程序中的参数解析以及如何快速有效地记录其语法。 下次您编写快速Python脚本时,请为argparse提供一些选项。 稍后您将感谢自己,您的命令将不像是一种快速破解,而更像是一个“真正的” Unix命令!

这是示例代码,可用于测试:


   
   
#!/usr/bin/env python3
# GNU All-Permissive License
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.  This file is offered as-is,
# without any warranty.

import argparse
import sys

def getOptions ( args = sys . argv [ 1 : ] ) :
    parser = argparse. ArgumentParser ( description = "Parses command." )
    parser . add_argument ( "-i" , "--input" , help = "Your input file." )
    parser . add_argument ( "-o" , "--output" , help = "Your destination output file." )
    parser . add_argument ( "-n" , "--number" , type = int , help = "A number." )
    parser . add_argument ( "-v" , "--verbose" , dest = 'verbose' , action = 'store_true' , help = "Verbose mode." )
    options = parser . parse_args ( args )
    return options

options = getOptions ( sys . argv [ 1 : ] )

if options. verbose :
    print ( "Verbose mode on" )
else :
    print ( "Verbose mode off" )

print ( options. input )
print ( options. output )
print ( options. number )

翻译自: https://opensource.com/article/19/7/parse-arguments-python

python参数解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值