详解Python中 sys.argv[]的用法简明解释


Posted in Python onDecember 20, 2017

因为是看书自学的python,开始后不久就遇到了这个引入的模块函数,且一直在IDLE上编辑了后运行,试图从结果发现它的用途,然而结果一直都是没结果,也在网上查了许多,但发现这个问题的比较详细的解释只有一个版本,大部分都是转裁和复制的。给的都是简明python教程上那个一长串代码的例子,说看了就明白了,可我看得晕头转向的还是没真正明白,只知道“sys.argv[0]表示代码本身文件路径”这点,其实还是不明其意。后来经过大量努力,多方求教才真正明悟了,谨以记录和分享,希望能从另一个角度给同在求索过程中的同学一点启发。

sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。其第一个元素是程序本身,随后才依次是外部给予的参数。

下面我们通过一个极简单的test.py程序的运行结果来说明它的用法。

#test.py
 import sys
 a=sys.argv[0]
 print(a)

将test.py保存在c盘的根目录下。

在程序中找到 ‘运行'->点击->输入"cmd"->回车键   进入控制台命令窗口(如下图),先输入cd c:\   (作用是将命令路径改到c盘根目录),然后输入test.py运行我们刚刚写的程序:

详解Python中 sys.argv[]的用法简明解释 

得到的结果是C:\test.py,这就是0指代码(即此.py程序)本身的意思。

然后我们将代码中0改为1 :

a=sys.argv[1]

保存后,再从控制台窗口运行,这次我们加上一个参数,输入:test.py what

详解Python中 sys.argv[]的用法简明解释 

得到的结果就是我们输入的参数what,看到这里你是不是开始明白了呢。

那我们再把代码修改一下:

a=sys.argv[2:]

保存后,再从控制台窗台运行程序,这次多加几个参数,以空格隔开:

test.py a b c d e f

详解Python中 sys.argv[]的用法简明解释 

得到的结果为[‘b', 'c', 'd', 'e', 'f']

应该大彻大悟了吧。Sys.argv其实就是一个元组,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。

这个例子是简明python教程上的,明白它之后你就明白sys.argv[]了。

import sys 
def readfile(filename): #从文件中读出文件内容 
  '''''Print a file to the standard output.''' 
  f = file(filename) 
  while True: 
    line = f.readline() 
    if len(line) == 0: 
      break 
    print line, # notice comma 分别输出每行内容 
  f.close() 
# Script starts from here 
if len(sys.argv) < 2: 
  print 'No action specified.' 
  sys.exit() 
if sys.argv[1].startswith('--'): 
  option = sys.argv[1][2:] 
  # fetch sys.argv[1] but without the first two characters 
  if option == 'version': #当命令行参数为-- version,显示版本号 
    print 'Version 1.2' 
  elif option == 'help': #当命令行参数为--help时,显示相关帮助内容 
    print '''''/ 
This program prints files to the standard output. 
Any number of files can be specified. 
Options include: 
 --version : Prints the version number 
 --help  : Display this help''' 
  else: 
    print 'Unknown option.' 
  sys.exit() 
else: 
  for filename in sys.argv[1:]: #当参数为文件名时,传入readfile,读出其内容 
    readfile(filename)

保存程序为sample.py.我们验证一下:

1)命令行带参数运行:sample.py ?version  输出结果为:version 1.2

2)命令行带参数运行:sample.py ?help  输出结果为:This program prints files……

3)在与sample.py同一目录下,新建a.txt的记事本文件,内容为:test argv;命令行带参数运行:sample.py a.txt,输出结果为a.txt文件内容:test argv,这里也可以多带几个参数,程序会先后输出参数文件内容。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python构造函数及解构函数介绍
Feb 26 Python
Django的session中对于用户验证的支持
Jul 23 Python
python 默认参数问题的陷阱
Feb 29 Python
Python编程实现二叉树及七种遍历方法详解
Jun 02 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
对python借助百度云API对评论进行观点抽取的方法详解
Feb 21 Python
python搜索包的路径的实现方法
Jul 19 Python
浅谈Pytorch torch.optim优化器个性化的使用
Feb 20 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
python 错误处理 assert详解
Apr 20 Python
python实现文字版扫雷
Apr 24 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 Python
简单了解Django模板的使用
Dec 20 #Python
python机器学习之决策树分类详解
Dec 20 #Python
python机器学习之神经网络(三)
Dec 20 #Python
python机器学习之神经网络(二)
Dec 20 #Python
PyCharm 常用快捷键和设置方法
Dec 20 #Python
python机器学习之神经网络(一)
Dec 20 #Python
使用python实现ANN
Dec 20 #Python
You might like
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
BootStrap中
2016/12/10 Javascript
vue二级路由设置方法
2018/02/09 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
numpy中矩阵合并的实例
2018/06/15 Python
Python列表与元组的异同详解
2019/07/02 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Python双链表原理与实现方法详解
2020/02/22 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
土木工程专业个人求职信
2013/12/05 职场文书
八一建军节活动方案
2014/02/10 职场文书
优良学风班申请材料
2014/02/13 职场文书
社团活动总结
2014/04/28 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
故宫导游词
2015/01/31 职场文书
承诺保证书格式
2015/02/28 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android
Python中的 enumerate和zip详情
2022/05/30 Python