详解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爬取三国演义的实现方法
Sep 12 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
Python如何在DataFrame增加数值
Feb 14 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
pandas处理csv文件的方法步骤
Oct 16 Python
解决numpy和torch数据类型转化的问题
May 23 Python
python中filter,map,reduce的作用
Jun 10 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文件夹的创建与删除方法
2015/01/24 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
详解PHP PDO简单教程
2019/05/28 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
python监控文件并且发送告警邮件
2018/06/21 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
英国复古服装购物网站:Collectif
2019/10/30 全球购物
J2EE面试题大全
2016/08/06 面试题
项目总经理岗位职责
2014/02/14 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
卫生标语大全
2014/06/21 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
护理医院见习报告
2014/11/03 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
python turtle绘制多边形和跳跃和改变速度特效
2022/03/16 Python
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript