zoukankan      html  css  js  c++  java
  • Python中处理命令行参数的3种方法

    作者|Dardan Xhymshiti
    编译|VK
    来源|Towards Data Science

    1.sys模块

    Python中的sys模块具有argv功能。当通过终端触发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代码提供参数的简单又强大的方法。它不是提供提供多个参数,而是提供单个“大”参数。这一个大参数是一个字典,键表示参数名,值表示它们的对应值。

    由于在Python中读取时,dictionary参数被表示为字符串,因此应该将其转换为字典。这可以通过使用ast.literal_eval或者json.loads函数做到。ast或json模块需要相应地导入。

    考虑下面的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
    

    触发mian.py:

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

    返回:

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

    3.argparse模块

    如果你想为应用程序提供适当的命令行界面,那么argparse就是要使用的模块。这是一个成熟的模块,提供开箱即用的参数解析、帮助消息以及参数被误用时会自动抛出错误。Python默认安装此模块。

    要充分利用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函数添加所有参数。此函数接收许多参数,其中包括参数名称(例如--name)、目标变量、预期数据类型、要显示的帮助消息等。

    触发main.py:

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

    返回

    John
    Doe
    22
    

    要了解有关此模块的更多信息,请查看argparse文档:https://docs.python.org/2/library/argparse.html

    结论

    很多时候,你需要向Python脚本传递参数。Python通过sys模块提供对这些参数的访问。你可以直接访问argv并处理自己的参数解析,也可以使用其他模块例如argparse为你完成这项工作。

    在我的日常编程生活中,如果我是代码的唯一用户,我会使用sys时;如果这代码准备用于生产时,我会使用argparse。

    原文链接:https://towardsdatascience.com/3-ways-to-handle-args-in-python-47216827831a

    欢迎关注磐创AI博客站:
    http://panchuang.net/

    sklearn机器学习中文官方文档:
    http://sklearn123.com/

    欢迎关注磐创博客资源汇总站:
    http://docs.panchuang.net/

  • 相关阅读:
    高级软件工程2017第2次作业—— 个人项目:四则运算题目生成程序(基于控制台)
    高级软件工程2017第1次作业
    2017高级软件工程 课程信息
    15061009-第0次作业(阅读与感想)
    新的開始!第一次作業
    软工实践第一次作业
    OO第四单元作业总结
    OO第二单元作业总结
    OO第一单元作业总结
    Dell BOSS 卡是什么
  • 原文地址:https://www.cnblogs.com/panchuangai/p/13642281.html
Copyright © 2011-2022 走看看