• 周二. 2月 7th, 2023

Python 命令行参数的详细用法

在 Python 中,可以使用 sys 模块的 argv 属性来访问命令行参数。sys.argv 是一个列表,其中第一个元素是程序本身的名称,其余元素是传递给程序的参数。

例如,假设有一个名为 my_program.py 的程序,你想在命令行中运行它并传递两个参数,如下所示:





python my_program.py arg1 arg2

my_program.py 中,你可以访问这些参数如下所示:





import sys

print(sys.argv)

这将输出一个列表,其中包含程序本身的名称和两个参数:





['my_program.py', 'arg1', 'arg2']

你可以使用索引访问列表中的每个元素,例如:





import sys

# 访问第一个参数(程序本身的名称)
print(sys.argv[0])

# 访问第二个参数(arg1)
print(sys.argv[1])

# 访问第三个参数(arg2)
print(sys.argv[2])

注意:sys.argv 中的第一个元素始终是程序本身的名称,因此参数从 sys.argv[1] 开始。

使用 argparse 模块可以更简单地解析命令行参数。下面是一个简单的示例:





import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--foo", help="foo help")
parser.add_argument("--bar", help="bar help")

args = parser.parse_args()

if args.foo:
    print(args.foo)

if args.bar:
    print(args.bar)

在这个示例中,我们定义了两个命令行参数:--foo--bar。这些参数是可选的,并且每个都有一个简短的描述。然后,我们使用 parse_args 方法解析参数。最后,我们检查 args 对象是否包含我们定义的参数,并在存在时打印出来。

在命令行中运行这个程序的方式如下所示:





python my_program.py --foo value1 --bar value2

在这种情况下,程序将输出以下内容:





value1
value2

你也可以使用 argparse 定义必需的参数,并为参数提供默认值。例如:





import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--foo", required=True, help="foo help")
parser.add_argument("--bar", default=10, help="bar help")

args = parser.parse_args()

print(args.foo)
print(args.bar)

在这个示例中,--foo 是一个必需的参数,而 --bar 是一个可选参数,其默认值为 10。

阅读  Python 抽象基类的使用方法

你也可以使用 argparse 定义带有多个值的参数,例如:





import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--numbers", nargs="+", help="list of numbers")

args = parser.parse_args()

print(args.numbers)

在这个示例中,我们定义了一个名为 --numbers 的参数,并使用 nargs 参数设置为 "+"。这意味着这个参数可以接受一个或多个数字。

在命令行中运行这个程序的方式如下所示:





python my_program.py --numbers 1 2 3 4 5

在这种情况下,程序将输出以下内容:





['1', '2', '3', '4', '5']

注意,args.numbers 是一个列表,其中包含所有传递给 --numbers 参数的值。

你也可以使用 argparse 定义带有多个值的参数,并使用类型转换函数将这些值转换为指定的类型。例如:





import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--numbers", nargs="+", type=int, help="list of numbers")

args = parser.parse_args()

print(args.numbers)

在这个示例中,我们使用 type 参数将 --numbers 参数转换为整数。这意味着如果在命令行中传递了字符串,将引发异常。

在命令行中运行这个程序的方式如下所示:





python my_program.py --numbers 1 2 3 4 5

除了定义带有多个值的参数之外,你还可以使用 argparse 模块定义带有选项的参数。例如:





import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--verbose", "-v", action="store_true", help="increase output verbosity")

args = parser.parse_args()

if args.verbose:
    print("Verbosity turned on")

在这个示例中,我们定义了一个名为 --verbose 的参数,并使用 action 参数设置为 "store_true"。这意味着如果在命令行中使用了 --verbose 选项,那么 args.verbose 将设置为 True

阅读  Python手动安装模块,安装库不需要联网

在命令行中运行这个程序的方式如下所示:





python my_program.py --verbose

在这种情况下,程序将输出以下内容:





Verbosity turned on

你也可以使用 argparse 定义带有选项的参数,并使用短名称来访问这些参数。例如,在上面的示例中,我们使用了 -v 参数定义了一个短名称。这意味着你可以在命令行中使用 -v 代替 --verbose





python my_program.py -v

你也可以使用 argparse 定义带有选项的参数,并为选项提供默认值。例如:





import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--verbose", "-v", action="store_true", default=False, help="increase output verbosity")

args = parser.parse_args()

if args.verbose:
    print("Verbosity turned on")

在这个示例中,我们为 --verbose 选项提供了一个默认值 False。这意味着如果你在命令行中没有使用 --verbose 选项,那么 args.verbose 也将设置为 False

在命令行中运行这个程序的方式如下所示:





python my_program.py

在这种情况下,程序不会输出任何内容,因为 args.verbose 被设置为 False

你也可以使用 argparse 定义带有选项的参数,并提供可供用户选择的多个值。例如:





import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--level", "-l", choices=["debug", "info", "warning", "error"], help="logging level")

args = parser.parse_args()

print(args.level)

在这个示例中,我们定义了一个名为 --level 的参数,并使用 choices 参数设置为可以接受的值的列表。

在命令行中运行这个程序的方式如下所示:





python my_program.py --level warning

在这种情况下,程序将输出以下内容:





warning

如果用户在命令行中输入了不在 choices 列表中的值,则将引发异常。

阅读  Python 包的使用详解

你还可以使用 argparse 定义带有选项的参数,并提供自定义帮助信息。例如:





import argparse

parser = argparse.ArgumentParser(description="My program description")
parser.add_argument("--foo", help="foo help")

args = parser.parse_args()

print(args.foo)

在这个示例中,我们定义了一个名为 --foo 的参数,并使用 help 参数为参数提供了一个简短的描述。

在命令行中运行这个程序的方式如下所示:





python my_program.py --foo bar

在这种情况下,程序将输出以下内容:





bar

你还可以在命令行中使用 -h--help 参数来获取帮助信息。

例如:





python my_program.py -h

将输出以下内容:





usage: my_program.py [-h] [--foo FOO]

My program description

optional arguments:
  -h, --help  show this help message and exit
  --foo FOO   foo help

由上可知,Python 命令行参数可以让你在程序运行时从命令行传递参数。这可以使你的程序更灵活,可以根据需要进行调整。

例如,你可以使用命令行参数来指定程序的输入文件,输出文件,日志级别等。

使用 Python 命令行参数的一种常见方法是使用 argparse 模块。你可以使用它来定义带有选项的参数,带有多个值的参数,并提供自定义的帮助信息。

你还可以使用其他库,例如 docopt 来解析更复杂的命令行参数。

总的来说,Python 命令行参数可以让你的程序更灵活,