详解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中使用百度音乐搜索的api下载指定歌曲的lrc歌词
Jul 18 Python
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
Aug 22 Python
tensorflow获取变量维度信息
Mar 10 Python
详解flask入门模板引擎
Jul 18 Python
详解Python基础random模块随机数的生成
Mar 23 Python
Python定义函数功能与用法实例详解
Apr 08 Python
对Python中画图时候的线类型详解
Jul 07 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
Centos7 下安装最新的python3.8
Oct 28 Python
python3.6使用SMTP协议发送邮件
May 20 Python
python在CMD界面读取excel所有数据的示例
Sep 28 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 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根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
html下载本地
2006/06/19 Javascript
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
js实现简单进度条效果
2020/03/25 Javascript
Python中返回字典键的值的values()方法使用
2015/05/22 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python之os操作方法(详解)
2017/06/15 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python将txt文件读取为字典的示例
2018/12/22 Python
python编写猜数字小游戏
2019/10/06 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
小结Python的反射机制
2020/09/28 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
学校三节实施方案
2014/06/09 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
电影建国大业观后感
2015/06/01 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
开票证明
2015/06/23 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
Python requests用法和django后台处理详解
2022/03/19 Python