返回本教程首页 | ||
---|---|---|
简明 Python 教程 | 第14章 Python标准库 | |
上一页 | sys模块 | 下一页 |
sys
模块包含系统对应的功能。我们已经学习了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)
来了解更多详情。
如果没有指定任何选项,而是为程序提供文件名的话,它就简单地打印出每个文件地每一行,按照命令行中的顺序一个文件接着一个文件地打印。
顺便说一下,名称cat是 concatenate 的缩写,它基本上表明了程序的功能——它可以在输出打印一个文件或者把两个或两个以上文件连接/级连在一起打印。
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
它们分别对应你的程序的标准输入、标准输出和标准错误流。
上一页 | 上一章 | 下一页 |
---|---|---|
简介 | 首页 | os模块 |