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。

更新于: 2019-07-30

525 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告