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 –要解析的参数列表

  • 选项–这是脚本要识别的选项字母的字符串。

  • Long_options –这是一个可选参数,是包含long选项名称的字符串的列表,应该支持。

getopt模块选项语法包括-

  • -一种

  • -bval

  • -b值

  • --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)设置可选参数。