首页 > 编程语言 > 详细

[转载]Python中的sys模块

时间:2016-03-26 21:58:15      阅读:273      评论:0      收藏:0      [点我收藏+]
#!/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)

运行结果如下:

技术分享

它如何工作

这个程序用来模范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.stdinsys.stdoutsys.stderr它们分别对应你的程序的标准输入、标准输出和标准错误流。

以上内容出自:http://www.2cto.com/shouce/pythonjc/ch14s02.html

更多内容:

sys.argv           #命令行参数List,第一个元素是程序本身路径 
sys.modules.keys() #返回所有已经导入的模块列表 
sys.exc_info()     #获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息 
sys.exit(n)        #退出程序,正常退出时exit(0) 
sys.hexversion     #获取Python解释程序的版本值,16进制格式如:0x020403F0 
sys.version        #获取Python解释程序的版本信息 
sys.maxint         #最大的Int值 
sys.maxunicode     #最大的Unicode值 
sys.modules        #返回系统导入的模块字段,key是模块名,value是模块 
sys.path           #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 
sys.platform       #返回操作系统平台名称 
sys.stdout         #标准输出 
sys.stdin          #标准输入 
sys.stderr         #错误输出 
sys.exc_clear()    #用来清除当前线程所出现的当前的或最近的错误信息 
sys.exec_prefix    #返回平台独立的python文件安装的位置 
sys.byteorder      #本地字节规则的指示器,big-endian平台的值是‘big‘,little-endian平台的值是‘little‘ 
sys.copyright      #记录python版权相关的东西 
sys.api_version    #解释器的C的API版本 
sys.version_info 
>>> sys.version_info 
(2, 4, 3, final, 0) #‘final‘表示最终,也有‘candidate‘表示候选,表示版本级别,是否有后继的发行 
sys.displayhook(value)      #如果value非空,这个函数会把他输出到sys.stdout,并且将他保存进__builtin__._.指在python的交互式解释器里,‘_‘ 代表上次你输入得到的结果,hook是钩子的意思,将上次的结果钩过来 
sys.getdefaultencoding()    #返回当前你所用的默认的字符编码格式 
sys.getfilesystemencoding() #返回将Unicode文件名转换成系统文件名的编码的名字 
sys.setdefaultencoding(name)#用来设置当前默认的字符编码,如果name和任何一个可用的编码都不匹配,抛出 LookupError,这个函数只会被site模块的sitecustomize使用,一旦别site模块使用了,他会从sys模块移除 
sys.builtin_module_names    #Python解释器导入的模块列表 
sys.executable              #Python解释程序路径 
sys.getwindowsversion()     #获取Windows的版本 
sys.stdin.readline()        #从标准输入读一行,sys.stdout.write("a") 屏幕输出a

本文出自 “浩天” 博客,http://tianhao936.blog.51cto.com/1043670/881535

[转载]Python中的sys模块

原文:http://www.cnblogs.com/Finn-Cheng/p/5324000.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!