温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Python中对Args进行处理

发布时间:2021-03-18 15:18:24 来源:亿速云 阅读:218 作者:Leah 栏目:开发技术

这篇文章将为大家详细讲解有关怎么在Python中对Args进行处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1. sys 模块

Python 中的 sys 模块具有 argv 功能。当通过终端触发 main.py 的执行时,此功能将返回提供给 main.py 的所有命令行参数的列表。除了其他参数之外,返回列表中的第一个元素是 main.py 的路径。

考虑下面的 main.py 示例

import sys
list_of_arguments = sys.argv
print(list_of_args[0]) 
print(list_of_args[1]) 
print(list_of_args[2]) 
print(list_of_args[3])

用如下方式在命令行触发 main.py :

python main.py first_arg "[second_arg]" "{\"arg\": 3}"

输出的结果如下所示:

test.py
first_arg
[second_arg]
{"arg": 3}

2.带有一个大参数的 sys 模块

这是一种为 Python 代码提供参数的简单而强大的方法。你不需要提供按空格分隔的大量参数,而是提供一个单一的“大”参数。这个大参数是一个字符串字典,其中 dict-keys 表示参数名称,dict-value 表示相应的值。

考虑下面的 main.py 示例

import sys
import ast
raw_arguments = sys.argv[1]
 
print(raw_arguments)
arguments = ast.literal_eval(raw_arguments)
 
print(arguments['name']) # John
print(arguments['surname']) # Doe
print(arguments['age']) # 22

用如下方式在命令行触发 main.py :

python main.py "{\"name\": \"John\", \"surname\": \"Doe\", \"age\": 22}"

输出的结果如下所示:

{"name": "John", "surname": "Doe", "age": 22}
John
Doe
22

3. argparse 模块

如果想为你的应用程序提供适当的命令行界面,则 argparse 是你需要的模块。

这是一个全面的模块,提供了现成的参数解析、帮助消息和误用参数时自动抛错。

要充分利用 argparse 提供的功能,需要花费一些时间来掌握。现在先然我们来考虑以下 main.py 示例:

import argparse
parser = argparse.ArgumentParser(description='Personal information')
parser.add_argument('--name', dest='name', type=str, help='Name of the candidate')
parser.add_argument('--surname', dest='surname', type=str, help='Surname of the candidate')
parser.add_argument('--age', dest='age', type=int, help='Age of the candidate')
args = parser.parse_args()
print(args.name)
print(args.surname)
print(args.age)

在初始化 ArgumentParses 的对象之后,我们使用 add_argument 函数添加所有预期的参数。该函数接收许多参数,其中包括参数名、目标变量、预期的数据类型、要显示的帮助消息等。

用如下方式在命令行触发 main.py :

python main.py --name John --surname Doe --age 22

输出的结果如下所示:

John
Doe
22

关于怎么在Python中对Args进行处理就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI