Python一天入门21:Python标准库-sys模块

来源:互联网 发布:eia原油库存数据最新 编辑:程序博客网 时间:2024/05/16 17:56

Python标准库是随Python附带安装的,它包含大量极其有用的模块。熟悉Python标准库是十分重要的,因为如果你熟悉这些库中的模块,那么你的大多数问题都可以简单快捷地使用它们来解决。

我们已经研究了一些这个库中的常用模块。你可以在Python附带安装的文档的“库参考”一节中了解Python标准库中所有模块的完整内容。

 

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

# 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)

 

输出:

$ 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)来了解更多详情。

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

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

更多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.stdin、sys.stdout和sys.stderr它们分别对应你的程序的标准输入、标准输出和标准错误流。

原创粉丝点击