python获得命令行输入的参数的两种方式


Posted in Python onNovember 02, 2020

外部直接执行python文件时,我们有时需要获得命令行的参数

获得命令行参数的两种方式

1、通过sys.argv

sys.argv:获得一个参数列表,第一个值为文件名本身,通过sys.argv[1]获得第文件名后的第一个参数 ,多个参数使用空格隔开

测试代码:

import sys
 
print(sys.argv)
print(len(sys.argv))
print(len(sys.argv[1]))

测试数据:

python3 test.py 第一个参数 第二个参数

执行结果:

['test.py', '第一个参数', '第二个参数']
3
5
[]
['第一个参数', '第二个参数']

2、通过getopt()获得参数值

如果命令行需要通过linux那中指定参数名的方法运行,可以使用getopt()来获得参数内容

命令【getopt.getopt(参数列表,"短选项参数",[长选项参数])】
参数有两种维度区分:短选项,长选项;带参数值(开关)和不带参数值

短选项参数(命令行使用-参数名):由1个字母组成,如果字母后面跟冒号:表示这个参数需要有参数值,否则表示不输入参数值
例如:io:
表示入参要输入-i -o=xxx

长选项参数(命令行使用--参数名):由[参数名=]表示,有值的参数一定要写=,否则会抛错
例如:["help","input=","output="]
表示入参要输入 --help --input=xxx --output=xxx

测试代码:

import getopt
import sys
 
opts,args=getopt.getopt(sys.argv[1:],"i:ho:",["help","input=","output="])
print(opts)
print(args)
 
for opts,arg in opts:
  print(opts)
  if opts=="-h" or opts=="--help":
    print("我只是一个说明文档")
  elif opts=="-i" or opts=="--input":
    print("我只是输入,输入内容如下:")
    print(arg)
  elif opts=="-o" or opts=="--output":
    print("我只是输出,输出内容如下:")
    print(arg)

测试数据:

python3 test.py -h -o=输出 --input=输入 最后一个参数

测试结果:

[('-h', ''), ('-o', '=输出'), ('--input', '输入')]
['最后一个参数']
-h
我只是一个说明文档
-o
我只是输出,输出内容如下:
=输出
--input
我只是输入,输入内容如下:
输入

说明:使用getopt()需要注意一下,不能把未定义的参数放到短选项和长选项的前面,否则-h --help这种不能读取到参数值(源码中不是很严谨,遇到这种情况直接就break了),放到后面可以,也能通过args获取到

getopt()中第一个参数写sys.argv[1:]的缘故是命令行第一个参数为文件名本身,这里没有意义

总结

到此这篇关于python获得命令行输入的参数的两种方式的文章就介绍到这了,更多相关python命令行参数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中文件遍历的两种方法
Jun 16 Python
Python中的闭包详细介绍和实例
Nov 21 Python
Pandas 按索引合并数据集的方法
Nov 15 Python
python实现顺时针打印矩阵
Mar 02 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
Python数学形态学实例分析
Sep 06 Python
keras tensorflow 实现在python下多进程运行
Feb 06 Python
python实现字符串和数字拼接
Mar 02 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
UI自动化定位常用实现方法代码示例
Oct 27 Python
python OpenCV学习笔记
Mar 31 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 #Python
python获取命令行参数实例方法讲解
Nov 02 #Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 #Python
详解tensorflow之过拟合问题实战
Nov 01 #Python
python cookie反爬处理的实现
Nov 01 #Python
10个python爬虫入门实例(小结)
Nov 01 #Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
Nov 01 #Python
You might like
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
Javascript实现的分页函数
2006/12/22 Javascript
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
2020/03/23 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
基于python历史天气采集的分析
2019/02/14 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
详解Python中import机制
2020/09/11 Python
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
商场消防演习方案
2014/02/12 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers
mysql中关键词exists的用法实例详解
2022/06/10 MySQL