Python | 外部参数传递
本文总结从外部传入 python
程序的参数的集中方法。
Updated: 2022 / 9 / 25
Python | 外部参数传递
- 总览
- sys
- argparse
- 参考链接
总览
常见的是 sys.argv
还有 argparse
1。
前者功能比较简单,能提供的有限;后者不是内置的,需要安装,但是功能确实比较强大。
sys
argparse
参考这里 1’ 2
此处先给出一个简单的代码示例,如下:
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
对象 parser
,ArgumentParser
对象包含将命令行解析成 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 中确定命令行参数
|
参考链接
argparse — 命令行选项、参数和子命令解析器 ↩︎ ↩︎
python打包含有参数传递的exe程序 ↩︎
Python | 外部参数传递相关推荐
- python 函数参数传递 格式_Python学习6.1_函数参数及参数传递
大多数编程语言都绕不开一个名词,那就是--函数(function).而函数很重要的部分则是参数(arguments)的使用.Python的参数传递总体来说是根据位置,传递对应的参数.阐述如下: 1.位 ...
- Python函数参数传递:传值还是传引用
引子 首先来看一个列子: def change(val):val.append(100)val = ['T', 'Z', 'Y'] nums = [0, 1] change(nums) print(n ...
- Python: 函数参数传递机制
Python: 函数参数传递机制 Python函数参数由实参传递给形参的过程,是由参数传递机制来控制的,根据实际参数类型不同,函数参数传递方式分为值传递和引用传递(又称为地址传递). 值传递机制 所谓 ...
- Python学习:Python中参数传递,是值传递,引用传递or其它
本博客主要学习python参数传递机制,了解python的参数是如何传递的.学过其它语言如(C,C++),都知道参数传递有值传递和引用传递,python的参数传递属于哪种? 一.值传递和引用传递 值传 ...
- Python函数参数传递
Python函数参数传递 一.前言 二.了解形式参数和实际参数 1.通过作用理解 2.通过比喻来理解形参和实参 三.位置参数 1.数量必须与定义时一致 2.位置必须与定义时一致 四.关键字参数 五.为 ...
- 命令行更新python的pip包 用pip或pycharm图形界面安装python外部库
pycharm安装可以选择安装位置,可以不装在python安装路径下,下图左下角可以选择路径 命令行直接pip默认装在python的安装文件夹里的lib路径下,如 C:\Users\xxxx\AppD ...
- Python函数参数传递的几种形式
Python函数参数传递的几种形式 前言 位置传参 序列传参(单星号元组传参) 关键字传参 字典关键字传参(双星号字典传参) 混合传参 函数的缺省参数 结束 前言 莫听穿林打叶声,何妨吟啸且徐行.竹杖 ...
- Python 函数参数传递
前言 Python 的函数参数传递相对于 C++来说更加灵活,并且使用也很方便,这里做下简单的总结. 正文 实参和形参 实参:在调用函数时提供的函数参数称为实参. 形参:定义函数时,函数中的变量成为形 ...
- python中参数传递_python中参数传递
在编程语言中,函数的参数传递有两种情况: 按值类型传递 num = 10 def double(arg): arg=arg*2 print(arg) double(num) 调用该函数,传入一个变量, ...
最新文章
- mongodb基础应用
- 记录:自制的小说推荐程序(一)
- 行人识别学习资料整理2018
- java Web发布的两种方式
- mongodb连接失败_深入浅出mongodb(一)
- Docker:Redis启动命令
- 面向小姐姐的编程——JAVA面向对象之多态
- python3 mysql库_Python3.7 MySQL 数据库连接
- 分析varnish日志
- JavaScript:堆栈溢出内存泄漏
- 181004有道扇贝每日一句
- 个性化hexo博客,添加评论系统,分享,友情链接功能
- 杜比专为旧版本Android,Android O专用杜比音效miui10已成功
- 学习TypeScript
- 给你个使用NAS私有云服务器的理由
- RHEL8红帽子系统 网卡命令
- oracle中text是什么意思,ORACLE TEXT是什么
- Autoware:ndt_mapping节点
- [动态内存分配] Allocaotrs 1/3 : KR
- 你应该成为公司需要的人还是成为自己想成为的人
热门文章
- ThinkPad电脑系统损坏如何重装Win10系统教学分享
- 全面剖析新闻营销给企业带来的好处
- 【编程实践】Google Guava 极简教程
- 面试 C++ 后台开发会考察哪些问题?
- MYSQL中的EXPLAN是用来解析sql语句的
- 【设计模式系列(一)】彻底搞懂工厂模式
- cad直线和圆弧倒角不相切_CAD中圆角、倒角的一些技巧
- [iOS]-NSTimer与循环引用的理解
- nstimer循环引用_iOS容易造成循环引用的三种场景NSTimer以及对应的使用方法(一)...
- 苹果手机wifi代理设置方法--用于抓包