简明 Python 教程
第14章 Python标准库
上一页 sys模块 下一页

sys模块

sys模块包含系统对应的功能。我们已经学习了sys.argv列表,它包含命令行参数。

命令行参数

例14.1 使用sys.argv

#!/usr/bin/python
# Filename: cat.py


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':
        print 'Version 1.2'
    elif option == '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(filename)

(源文件:code/cat.py

输出

$ python cat.py
No action specified.

$ python cat.py --help
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

$ python cat.py --version
Version 1.2

$ python cat.py --nonsense
Unknown option.

$ python cat.py poem.txt
Programming is fun
When the work is done
if you wanna make your work also fun:
        use Python!

它如何工作

这个程序用来模范Linux/Unix用户熟悉的cat命令。你只需要指明某些文本文件的名字,时时彩计划软件公式:这个程序会把它们打印输出。

在Python程序运行的时候,即不是在交互模式下,在sys.argv列表中总是至少有一个项目。它就是当前运行的程序名称,作为sys.argv[0](由于Python从0开始计数)。其他的命令行参数在这个项目之后。

为了使这个程序对用户更加友好,我们提供了一些用户可以指定的选项来了解更多程序的内容。我们使用第一个参数来检验我们的程序是否被指定了选项。如果使用了--version选项,程序的版本号将被打印出来。类似地,如果指定了--help选项,我们提供一些关于程序的解释。我们使用sys.exit函数退出正在运行的程序。和以往一样,你可以看一下help(sys.exit)来了解更多详情。

如果没有指定任何选项,而是为程序提供文件名的话,它就简单地打印出每个文件地每一行,按照命令行中的顺序一个文件接着一个文件地打印。

顺便说一下,名称catconcatenate 的缩写,它基本上表明了程序的功能——它可以在输出打印一个文件或者把两个或两个以上文件连接/级连在一起打印。

更多sys的内容

sys.version字符串给你提供安装的Python的版本信息。sys.version_info元组则提供一个更简单的方法来使你的程序具备Python版本要求功能。

[swaroop@localhost code]$ python
>>> import sys
>>> sys.version
'2.3.4 (#1, Oct 26 2004, 16:42:40) \n[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)]'
>>> sys.version_info
(2, 3, 4, 'final', 0)

对于有经验的程序员,sys模块中其他令人感兴趣的项目有sys.stdinsys.stdoutsys.stderr它们分别对应你的程序的标准输入、标准输出和标准错误流。


上一页 上一级 下一页
简介 首页 os模块
时时彩计划软件公式
@ssv
重庆时时彩改单教程 帝豪时时彩平台 时时彩组60最大遗漏 黑金博士时时彩计划 时时彩遗漏报警软件
时时彩怎么刷流水 彩云在线时时彩 时时彩做号网站 上海时时彩开奖走势图 时时彩后二稳定杀号
彩神通免费版手机版 时时彩平台排行榜2016 时时彩k线走势图 领航时时彩软件lm0 时时彩10元赔多少
时时彩最准的计划软件 内蒙古十一选五下载 3d通时时彩软件 时时彩平台奖金高9.99 领航时时彩软件免费版
上海11选5走势图360 时时彩交流群 辽宁体彩11选5走势图图表 体育彩票大乐透开奖结果14122 山东11选5 遗漏?﹤计划﹥
11选5开奖结果 双色球开奖走势图 陕西11选5走势图481 如何化妆让眼睛变大 重庆时时彩手机开奖
贵州快3号码分布图♂广西和值推荐♂上海出发贵州3日游 河北福彩20选5 贵州快三走势图5000期 排列5跨度走势图 重庆时时彩送彩金
江西福彩快三今天走势计划◎3d走势图带连线专业版计划◎江西新11选五开奖结果计划◎江西快三官网下载 贵州十一选五开奖走势图 七乐彩兑奖有效期 河北快三开奖走势图 四川快乐12遗漏任五