本文总结从外部传入 python 程序的参数的集中方法。

Updated: 2022 / 9 / 25

Python | 外部参数传递

  • 总览
    • sys
    • argparse
  • 参考链接

总览

常见的是 sys.argv 还有 argparse 1
前者功能比较简单,能提供的有限;后者不是内置的,需要安装,但是功能确实比较强大。

sys

argparse

参考这里 12

此处先给出一个简单的代码示例,如下:

parser = argparse.ArgumentParser(prog='WriteJSON',description='Writing the input json data to the corresponding .xls template file and save')parser.add_argument("-i", "--id", type=str, default="01", help='experiment type number')parser.add_argument("-c", "--continue_transfer", type=int, default=0,help="whether to continue to transfer data. value=0 don't transfer, else continue transfer")parser.add_argument("-d", "--data", type=str, default=None, help='data with json format')parser.add_argument('--version', action='version', version='%(prog)s 1.0')args = parser.parse_args()id = args.id                                                                                    # 不给也可以 默认"01"continue_transfer = args.continue_transfer                                                      # 不给也可以 默认0data = args.data                                                                                # 不给也可以,默认Noneprint('id', id)print('continue_transfer', continue_transfer)print('data', data)

运行效果如下:

(base) PyinstallerTest % python script.py -h
usage: WriteJSON [-h] [-i ID] [-c CONTINUE_TRANSFER] [-d DATA] [--version]Writing the input json data to the corresponding .xls template file and saveoptional arguments:-h, --help            show this help message and exit-i ID, --id ID        experiment type number-c CONTINUE_TRANSFER, --continue_transfer CONTINUE_TRANSFERwhether to continue to transfer data. value=0 don't transfer, else continue transfer-d DATA, --data DATA  data with json format--version             show program's version number and exit(base) PyinstallerTest % python script.py
id 01
continue_transfer 0
data None(base) PyinstallerTest % python script.py -i=04
id 04
continue_transfer 0
data None(base) PyinstallerTest % python script.py --id=04
id 04
continue_transfer 0
data None(base) PyinstallerTest % python script.py -c=5
id 01
continue_transfer 5
data None(base) PyinstallerTest % python script.py -d="whatever"
id 01
continue_transfer 0
data whatever(base) PyinstallerTest % python script.py --version
WriteJSON 1.0

使用 argparse 的第一步是创建一个 ArgumentParser 对象 parserArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。
prog 参数内的名称是程序的名字,如未提前给出则按 python 脚本的名称为默认值。
description 参数内的字符串内容是在参数帮助文档之前显示的文本,

方法如下:

方法 作用
add_argument() 给一个 ArgumentParser 添加程序参数信息是通过调用 add_argument() 方法完成的。通常,这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象。这些信息在 parse_args() 调用时被存储和使用。
可能你会发现有的参数后面都会跟上一个同名参数的大写形式,根据官方文档可知,只需要在每个参数里设置 metavar=' ',那个大写就会消失。
default 表示为该参数的默认值。
help 提供该参数作用的描述性信息。
parse_args() ArgumentParser 通过 parse_args() 方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。在大多数情况下,这意味着一个简单的 Namespace 对象将从命令行解析出的属性构。在脚本中,通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数

参考链接


  1. argparse — 命令行选项、参数和子命令解析器 ↩︎ ↩︎

  2. python打包含有参数传递的exe程序 ↩︎

Python | 外部参数传递相关推荐

  1. python 函数参数传递 格式_Python学习6.1_函数参数及参数传递

    大多数编程语言都绕不开一个名词,那就是--函数(function).而函数很重要的部分则是参数(arguments)的使用.Python的参数传递总体来说是根据位置,传递对应的参数.阐述如下: 1.位 ...

  2. Python函数参数传递:传值还是传引用

    引子 首先来看一个列子: def change(val):val.append(100)val = ['T', 'Z', 'Y'] nums = [0, 1] change(nums) print(n ...

  3. Python: 函数参数传递机制

    Python: 函数参数传递机制 Python函数参数由实参传递给形参的过程,是由参数传递机制来控制的,根据实际参数类型不同,函数参数传递方式分为值传递和引用传递(又称为地址传递). 值传递机制 所谓 ...

  4. Python学习:Python中参数传递,是值传递,引用传递or其它

    本博客主要学习python参数传递机制,了解python的参数是如何传递的.学过其它语言如(C,C++),都知道参数传递有值传递和引用传递,python的参数传递属于哪种? 一.值传递和引用传递 值传 ...

  5. Python函数参数传递

    Python函数参数传递 一.前言 二.了解形式参数和实际参数 1.通过作用理解 2.通过比喻来理解形参和实参 三.位置参数 1.数量必须与定义时一致 2.位置必须与定义时一致 四.关键字参数 五.为 ...

  6. 命令行更新python的pip包 用pip或pycharm图形界面安装python外部库

    pycharm安装可以选择安装位置,可以不装在python安装路径下,下图左下角可以选择路径 命令行直接pip默认装在python的安装文件夹里的lib路径下,如 C:\Users\xxxx\AppD ...

  7. Python函数参数传递的几种形式

    Python函数参数传递的几种形式 前言 位置传参 序列传参(单星号元组传参) 关键字传参 字典关键字传参(双星号字典传参) 混合传参 函数的缺省参数 结束 前言 莫听穿林打叶声,何妨吟啸且徐行.竹杖 ...

  8. Python 函数参数传递

    前言 Python 的函数参数传递相对于 C++来说更加灵活,并且使用也很方便,这里做下简单的总结. 正文 实参和形参 实参:在调用函数时提供的函数参数称为实参. 形参:定义函数时,函数中的变量成为形 ...

  9. python中参数传递_python中参数传递

    在编程语言中,函数的参数传递有两种情况: 按值类型传递 num = 10 def double(arg): arg=arg*2 print(arg) double(num) 调用该函数,传入一个变量, ...

最新文章

  1. mongodb基础应用
  2. 记录:自制的小说推荐程序(一)
  3. 行人识别学习资料整理2018
  4. java Web发布的两种方式
  5. mongodb连接失败_深入浅出mongodb(一)
  6. Docker:Redis启动命令
  7. 面向小姐姐的编程——JAVA面向对象之多态
  8. python3 mysql库_Python3.7 MySQL 数据库连接
  9. 分析varnish日志
  10. JavaScript:堆栈溢出内存泄漏
  11. 181004有道扇贝每日一句
  12. 个性化hexo博客,添加评论系统,分享,友情链接功能
  13. 杜比专为旧版本Android,Android O专用杜比音效miui10已成功
  14. 学习TypeScript
  15. 给你个使用NAS私有云服务器的理由
  16. RHEL8红帽子系统 网卡命令
  17. oracle中text是什么意思,ORACLE TEXT是什么
  18. Autoware:ndt_mapping节点
  19. [动态内存分配] Allocaotrs 1/3 : KR
  20. 你应该成为公司需要的人还是成为自己想成为的人

热门文章

  1. ThinkPad电脑系统损坏如何重装Win10系统教学分享
  2. 全面剖析新闻营销给企业带来的好处
  3. 【编程实践】Google Guava 极简教程
  4. 面试 C++ 后台开发会考察哪些问题?
  5. MYSQL中的EXPLAN是用来解析sql语句的
  6. 【设计模式系列(一)】彻底搞懂工厂模式
  7. cad直线和圆弧倒角不相切_CAD中圆角、倒角的一些技巧
  8. [iOS]-NSTimer与循环引用的理解
  9. nstimer循环引用_iOS容易造成循环引用的三种场景NSTimer以及对应的使用方法(一)...
  10. 苹果手机wifi代理设置方法--用于抓包