9.6 命令行參数
    sys模块通过sys.argv属性提供了对命令行参数的访问。命令行参数是调用某个程序时除程序名以外的其他参数。这样命名是有历史原因的,在一个基于文本的环境里(比如UNIX操作系统的shell环境或者DOS-shell),这些参数和程序的文件名一同被输入的。但在IDE或者GUI环境中可能就不会是这样了,大多IDE环境都提供一个用来输入“命令行参数”的窗口;这些参数最后会像命令行上执行那样被传递给程序。
    熟悉C语言的读者可能会问了,“argc哪去了?”argc和argv分别代表参数个数(argument count)和参数向量(argument vector)。argv变量代表一个从命令行上输入的各个参数组成的字符串数组;argc变量代表输入的参数个数。在Python中,argc其实就是sys.argv列表的长度,而该列表的第一项sys.argv[0]永远是程序的名称。
    总结如下:
    • sys.argv是命令行参数的列表;
    • len (sys.argv)是命令行参数的个数(也就是argc)。
    我们来创建这个名为argv.py的测试程序:
    9.6 命令行參数 - 图1
    下面是该脚本程运行的输出:
    9.6 命令行參数 - 图2
    命令行参数有用吗? Unix操作系统中的命令通常会接受输入,执行一些功能,然后把结果作为流输出出来。这些输出的结果还可能被作为下一个程序的输入数据,在完成了一些其他处理后,再把新的输出送到下一个程序。如此延伸下去。各个程序的输出一般是不保存的,这样可以节省大量的磁盘空间,各个程序的输出通常使用“管道”实现到下个程序输入的转换。
    这是通过向命令行提供数据或是通过标准输入实现的。当一个程序显示或是发送它的输出到标准输出文件时,内容就会出现在屏幕上——除非该程序被管道连接到下一个程序,那么此时程序的标准输出就成为下个程序的标准输入。你现在明白了吧?
    命令行参数使程序员可以在启动一个程序的时候对程序行为做出选择。在大多情况下,这些执行操作都不需要人为干预,通过批处理执行。命令行参数配合程序选项可以实现这样的处理功能。让计算机在夜里有空闲时完成一些需要大量处理的工作。
    Python还提供了两个模块用来辅助处理命令行参数。其中一个(最原始的)是getopt模块,它更简单些,但是不是很精细。而Python 2.3引入的optparse模块提供了一个更强大的工具,而且它更面向对象。如果你只是用到一些简单的选项,我们推荐getopt,但如果你需要提供复杂的选项,那么请参阅 optparse。