📜  Python中的命令行参数

📅  最后修改于: 2022-05-13 01:55:40.676000             🧑  作者: Mango

Python中的命令行参数

在操作系统的命令行 shell 中,在程序名称之后给出的参数称为命令行参数。 Python提供了处理这些类型参数的各种方法。最常见的三种是:

  • 使用 sys.argv
  • 使用 getopt 模块
  • 使用 argparse 模块

使用 sys.argv

sys 模块提供了用于操作Python运行时环境的不同部分的函数和变量。该模块提供对解释器使用或维护的一些变量以及与解释器进行强交互的函数的访问。
一个这样的变量是 sys.argv,它是一个简单的列表结构。它的主要目的是:

  • 它是一个命令行参数列表。
  • len(sys.argv) 提供命令行参数的数量。
  • sys.argv[0] 是当前Python脚本的名称。

示例:假设有一个用于将两个数字相加的Python脚本,并且这些数字作为命令行参数传递。

Python3
# Python program to demonstrate
# command line arguments
 
 
import sys
 
# total arguments
n = len(sys.argv)
print("Total arguments passed:", n)
 
# Arguments passed
print("\nName of Python script:", sys.argv[0])
 
print("\nArguments passed:", end = " ")
for i in range(1, n):
    print(sys.argv[i], end = " ")
     
# Addition of numbers
Sum = 0
# Using argparse module
for i in range(1, n):
    Sum += int(sys.argv[i])
     
print("\n\nResult:", Sum)


Python3
# Python program to demonstrate
# command line arguments
 
 
import getopt, sys
 
 
# Remove 1st argument from the
# list of command line arguments
argumentList = sys.argv[1:]
 
# Options
options = "hmo:"
 
# Long options
long_options = ["Help", "My_file", "Output="]
 
try:
    # Parsing argument
    arguments, values = getopt.getopt(argumentList, options, long_options)
     
    # checking each argument
    for currentArgument, currentValue in arguments:
 
        if currentArgument in ("-h", "--Help"):
            print ("Displaying Help")
             
        elif currentArgument in ("-m", "--My_file"):
            print ("Displaying file_name:", sys.argv[0])
             
        elif currentArgument in ("-o", "--Output"):
            print (("Enabling special output mode (% s)") % (currentValue))
             
except getopt.error as err:
    # output error, and return with an error code
    print (str(err))


Python3
# Python program to demonstrate
# command line arguments
 
 
import argparse
 
# Initialize parser
parser = argparse.ArgumentParser()
parser.parse_args()


Python3
# Python program to demonstrate
# command line arguments
 
 
import argparse
 
msg = "Adding description"
 
# Initialize parser
parser = argparse.ArgumentParser(description = msg)
parser.parse_args()


Python3
# Python program to demonstrate
# command line arguments
 
 
import argparse
 
 
# Initialize parser
parser = argparse.ArgumentParser()
 
# Adding optional argument
parser.add_argument("-o", "--Output", help = "Show Output")
 
# Read arguments from command line
args = parser.parse_args()
 
if args.Output:
    print("Displaying Output as: % s" % args.Output)


输出:

python-命令行参数

使用 getopt 模块

Python getopt 模块类似于 C 的 getopt()函数。与 sys 模块不同,getopt 模块通过参数验证扩展了输入字符串的分离。它允许包括价值分配在内的短期和长期期权。但是,该模块需要使用 sys 模块来正确处理输入数据。要使用 getopt 模块,需要从命令行参数列表中删除第一个元素。

例子:

Python3

# Python program to demonstrate
# command line arguments
 
 
import getopt, sys
 
 
# Remove 1st argument from the
# list of command line arguments
argumentList = sys.argv[1:]
 
# Options
options = "hmo:"
 
# Long options
long_options = ["Help", "My_file", "Output="]
 
try:
    # Parsing argument
    arguments, values = getopt.getopt(argumentList, options, long_options)
     
    # checking each argument
    for currentArgument, currentValue in arguments:
 
        if currentArgument in ("-h", "--Help"):
            print ("Displaying Help")
             
        elif currentArgument in ("-m", "--My_file"):
            print ("Displaying file_name:", sys.argv[0])
             
        elif currentArgument in ("-o", "--Output"):
            print (("Enabling special output mode (% s)") % (currentValue))
             
except getopt.error as err:
    # output error, and return with an error code
    print (str(err))

输出:

python-命令行参数

使用 argparse 模块

使用 argparse 模块是比上述两个选项更好的选择,因为它提供了很多选项,例如位置参数、参数的默认值、帮助消息、指定参数的数据类型等。

注意:作为默认的可选参数,它包括 -h 及其长版本 -help。

示例 1: argparse 模块的基本使用。

Python3

# Python program to demonstrate
# command line arguments
 
 
import argparse
 
# Initialize parser
parser = argparse.ArgumentParser()
parser.parse_args()

输出:

python-命令行参数


示例 2:在帮助消息中添加描述。

Python3

# Python program to demonstrate
# command line arguments
 
 
import argparse
 
msg = "Adding description"
 
# Initialize parser
parser = argparse.ArgumentParser(description = msg)
parser.parse_args()

输出:

python-命令行参数


示例 3:定义可选值

Python3

# Python program to demonstrate
# command line arguments
 
 
import argparse
 
 
# Initialize parser
parser = argparse.ArgumentParser()
 
# Adding optional argument
parser.add_argument("-o", "--Output", help = "Show Output")
 
# Read arguments from command line
args = parser.parse_args()
 
if args.Output:
    print("Displaying Output as: % s" % args.Output)

输出:

python-命令行参数