Python中的命令行和变量参数?
命令行参数
命令行参数是输入参数,允许用户使程序以某种方式运行,例如输出其他信息,或从指定来源读取数据,或以所需格式解释数据。
Python 命令行参数
Python 提供了许多读取命令行参数的选项。最常见的方法有:
- Python sys.argv
- Python getopt 模块
- Python argparse 模块
Python sys 模块
sys 模块将命令行参数 (CLA) 存储到一个列表中,要检索它,我们使用 sys.argv。这是一种简单的方法,可以将命令行参数作为字符串读取。
import sys print(type(sys.argv)) print('The command line arguments are: ') for i in sys.argv: print(i)
运行上述程序后,我们的输出将类似于:
输出
>python CommandLineOption.py H E L L O <class 'list'> The command line arguments are: CommandLineOption.py H E L L O
Python getopt 模块
python getopt 模块解析类似于 sys.argv 的参数序列,并返回选项和参数对的序列以及非选项参数的序列。
语法
getopt.getopt(args, options, [long_options])
其中
Args – 要解析的参数列表
Options – 这是脚本想要识别的选项字母字符串。
Long_options – 此参数是可选的,是一个包含要支持的长选项名称的字符串列表。
getopt 模块选项语法包括:
- -a
- -bval
- -b val
- --noarg
- --witharg=val
- --witharg val
让我们通过一个示例来了解 getopt 模块:
短格式选项
以下程序采用两个选项 -a 和 -b,第二个选项需要一个参数。
import getopt print (getopt.getopt(['-a', '-bval', '-c', 'val'], 'ab:c:'))
结果
([('-a', ''), ('-b', 'val'), ('-c', 'val')], [])
长格式选项
该程序采用两个选项 --noarg 和 --witharg,序列应为 [‘noarg’, ‘witharg=’]
import getopt print (getopt.getopt([ '--noarg', '--witharg', 'val', '--witharg2=another' ],'',[ 'noarg', 'witharg=', 'witharg2=' ]))
结果
([('--noarg', ''), ('--witharg', 'val'), ('--witharg2', 'another')], [])
另一个演示 geopt 模块用法的示例:
import getopt import sys argv = sys.argv[1:] try: opts, args = getopt.getopt(argv, 'hm:d', ['help', 'my_file=']) print(opts) print(args) except getopt.GetoptError: print('Something Wrong!') sys.exit(2)
结果
>python CommandLineOption.py -m 2 -h "Help" H E L L O [('-m', '2'), ('-h', '')] ['Help', 'H', 'E', 'L', 'L', 'O']
Python argparse 模块
Python argparse 模块是解析命令行参数的首选方法。此模块提供了多种选项,例如位置参数、参数的默认值、帮助消息、指定参数的数据类型等。
下面是一个简单的程序,用于了解 argparse 模块:
import argparse parser = argparse.ArgumentParser() parser.add_argument("string", help="Print the word in upper case letters") args = parser.parse_args() print(args.string.upper()) # This way argument can be manipulated.
输出
>python CommandLineOption.py "Hello, pythoN" HELLO, PYTHON
我们可以使用 argparse 模块设置可选参数,例如 --verbosity。
广告