「argv」是「argument variable」参数变量的简写形式,一般在命令行调用的时候由系统传递给程序。这个变量其实是一个List列表,argv[0] 一般是被调用的脚本文件名或全路径,和操作系统有关。sys.argv变量是一个字符串的列表。特别地,sys.argv包含了命令行参数 的列表,即使用命令行传递给你的程序的参数。注意,Python从0开始计数,而非从1开始。sys.argv[]是用来获取命令行参数的,sys.argv[0]比如在CMD命令行输入python test.py -help
,那么sys.argv[0]就代表“test.py”。sys.argv[0]是命令名;sys.argv[1:] 是所有参数;sys.startswith() 是用来判断一个对象是以什么开头的,比如在python命令行输入“’abc’.startswith(‘ab’)”就会返回True。
##取得命令行参数 在使用之前,首先要取得命令行参数。使用sys模块可以得到命令行参数。
import sys
print sys.argv
然后在命令行下敲入任意的参数,如:
python get.py -o t --help cmd file1 file2
结果为:
['get.py', '-o', 't', '--help', 'cmd', 'file1', 'file2']
可见,所有命令行参数以空格为分隔符,都保存在了sys.argv列表中。其中第1个为脚本的文件名。
##选项的写法要求 对于短格式,”-“号后面要紧跟一个选项字母。如果还有此选项的附加参数,可以用空格分开,也可以不分开。长度任意,可以用引号。如以下是正确的:
-o
-oa
-obbbb
-o bbbb
-o "a b"
对于长格式,”–“号后面要跟一个单词。如果还有些选项的附加参数,后面要紧跟”=”,再加上参数。”=”号前后不能有空格。如以下是正确的:
--help=file1
而这些是不正确的:
-- help=file1
--help =file1
--help = file1
--help= file1
##如何用getopt进行分析 使用getopt模块分析命令行参数大体上分为三个步骤:
第一步很简单,只需要:
import getopt, sys
第二步处理方法如下(以Python手册上的例子为例):
try:
opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])
except getopt.GetoptError:
# print help information and exit:
如上面解释的一个命令行例子为:
'-h -o file --help --output=out file1 file2'
在分析完成后,opts应该是:
[('-h', ''), ('-o', 'file'), ('--help', ''), ('--output', 'out')]
而args则为:
['file1', 'file2']
第三步主要是对分析出的参数进行判断是否存在,然后再进一步处理。主要的处理模式为:
for o, a in opts:
if o in ("-h", "--help"):
usage()
sys.exit()
if o in ("-o", "--output"):
output = a
使用一个循环,每次从opts中取出一个两元组,赋给两个变量。o保存选项参数,a为附加参数。接着对取出的选项参数进行处理。(例子也采用手册的例子)
写于2015年8月20日,西安至成都火车上。
前阵子突然下了决心,要养成读书的习惯。此读书不仅仅限于专业相关的工具书,更指能涤荡人心灵的,富有文学性的书。本想从图书馆借沈从文的边城,奈何图书馆迁移,闭馆了,只得从网上下载了这部书,打算在归家的火车上看,想着火车上信号也不好,手机电池也不耐用,不正好督促自己看书么?
到了候车室离发车还有一个多小时,就拿出平板看起来。我书读的少,不敢枉自评价沈先生的文笔,但书的一开头对于景和事的描写轻易地就抓住了我,让我忍不住一直都下去。
白塔就是祖父的象征吧,翠翠躲在白塔的背面睡午觉,远远地也能看见白塔。雷雨夜过后,白塔坍塌了,祖父也死了,唏嘘…
我们说的湘西跟江南一样,都是文化形式留给我们的印象,是我们的想象构成的。它们只在中国人的梦中。