sys模块能够访问与Python解释器联系紧密的变量和函数。sys模块是内嵌模块。sys模块中一些重要的变量和函数如下:
变量:
argv 传递到Python解释器的命令行参数,包括脚本参数(脚本的名称一般为sys.argv[0])。对于一般的命令行参数 可 以使用sys.argv来处理,复杂的命令行参数可以使用optparse模块来处理。变量类型:列表。
path 是一个符号列表。指定模块搜索路径的字符串列表。其中的每个字符串(即列表项)都是一个目录名,在import 语句执行时,解释器就会从这些目录中查找模块。变量类型:列表。
platform 是Python解释器正在运行的“平台”的平台标示符。它可能是标识操作系统的名字(如sunos5或win32或 linux2),也可能是标识其他种类的平台(如运行Jython的话就是Java虚拟机)。变量类型:字符串.
modules 是映射模块名字到载入模块的字典(dictionary of loaded modules)。sys.modules只应用于目前导入的模 块,将模块名字映射到实际存在的模块上。变量类型:字典。
stdin 标准输入流,一个类文件(file-like)对象。数据输入的标准源是sys.stdin。当程序从标准输入读取数据时, 可以通过输入或者使用管道把它和其他程序的标准输出链接起来提供文本。
stdout 标准输出流。要打印的文本保存在stdout内。input和raw_input函数的提示文字也是写入到sys.stdout中。写 入sys.stdout的数据一般是显示在屏幕上,但也可以使用管道连接到其他程序的标准输入。
stderr 标准错误流。错误信息被写入到sys.stderr中,它和sys.stdout在很多方面相似。
函数:
exit([arg]) 退出当前的程序,可选参数[arg]为给定的返回值或者错误信息。
sys模块的主要用处就是sys.argv对命令行参数的处理。脚本的名字存在sys.argv[0]中。下面的代码1用于获取命令行参数,并对参数列表进行操作(反转等).代码2简单的利用sys.argv来处理命令行参数:
#! /usr/bin/env python
#coding=utf-8
import sys
args=sys.argv[1:]
#打印脚本名
print sys.argv[0]
#反转参数
args.reverse()
#将参数组成一个字符串
str=' '.join(args)
print str
#! /usr/bin/env python
#coding=utf-8
#本程序读取指定文件,利用sys模块来简单处理命令行参数
#本程序参考 简明Python教程
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
#定义文件处理函数
def file_read(filename):
try:
fp=open(filename,'r')
except:
print "输入文件路径不是有效文件路径"
return
line_count=0
while True:
line=fp.readline()
if len(line)==0:
break
line_count=line_count+1
print line
fp.close()
return line_count
#定义函数来打印帮助字符串
def print_help():
print '''
-h 或--help 显示帮助信息
-f filepath 或--file=filepath 指定读取文件
-l 可选参数。决定是否要打印文件行数
'''
#参数的处理
if len(sys.argv)<2:
print "请输入有效文件路径和其他可选参数。参数使用说明如下:"
print_help()
sys.exit()
if sys.argv[1].startswith('-'):
a=sys.argv[1]
if a[1]=='-':
if a[2:]=="help": #说明使用的是--help参数
print_help()
elif a[2:6]=="file": #说明使用--file参数
filepath=a[7:]
a=file_read(filepath)
if sys.argv[2]=="-l": #决定是否要打印行数
print a
elif a[1]=='h':
print_help()
elif a[1]=='f':
filepath=sys.argv[2]
a=file_read(filepath)
if sys.argv[3]=='-l':
print a
else:
print "参数错误"
sys模块另一个用处就是sys.stdout变量的使用,可以使用sys.stdout.write()函数来将字符串打印在屏幕上,类似于print.
sys.stdout.write("Hello World!")