1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
| 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.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
python之sys模块详解
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sys.argv: 实现从程序外部向程序传递参数。 示例:sys.py #!/usr/bin/env python import sys print sys.argv[0] print sys.argv[1] 运行: # python sys.py argv1 sys.py argv1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sys.exit([arg]): 功能:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.exit函数,带有 一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。(0是正常退 出,其他(1-127)为异常)
例:exit.py #!/usr/bin/env python import sys def exitfunc(value): print value sys.exit(0)
print "hello"
try: sys.exit(1) except SystemExit,value: exitfunc(value)
print "come"
运行: # python exit.py hello 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sys.path 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时 正确找到。 例: >>> import sys >>> sys.path ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/ usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist- packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/ usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
有时候为了让python能够找到我们自己定义的模块,需要修改sys.path的内容,比如:
# 在path的开始位置插入test >>> sys.path.insert(0,'test') >>> sys.path ['test', '', 'E:\\Python27\\Lib\\idlelib', 'C:\\Windows\\system32\\python27.zip', 'E:\\Python27\ \DLLs', 'E:\\Python27\\lib', 'E:\\Python27\\lib\\plat-win', 'E:\\Python27\\lib\\lib-tk', 'E:\ \Python27', 'E:\\Python27\\lib\\site-packages']
# 可以成功import test >>> import test
# 找不到 other 这个模块 >>> import other Traceback (most recent call last): File "<pyshell#10>", line 1, in <module> import other ImportError: No module named other
# 需要添加path >>> sys.path.insert(0,'other') >>> import other
也可以用sys.path.append(“mine module path”)来添加自定义的module。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sys.platform 获取当前执行环境的平台,如win32表示是Windows 32bit操作系统,linux2表示是linux平台 # linux >>> import sys >>> sys.platform 'linux2'
# windows >>> import sys >>> sys.platform 'win32' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sys.stdin,sys.stdout,sys.stderr: stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print不能满 足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备 ( device ), 或者以非标准的方式处理它们
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sys.modules 功能:sys.modules是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模 块,sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快 了程序运行的速度。它拥有字典所拥有的一切方法。
例:modules.py #!/usr/bin/env python import sys print sys.modules.keys() print sys.modules.values() print sys.modules["os"]
运行: python modules.py ['copy_reg', 'sre_compile', '_sre', 'encodings', 'site', '__builtin__',......
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sys.builtin_module_names sys.builtin_module_names返回一个列表,包含内建模块的名字。如: >>> import sys >>> print sys.builtin_module_names ('__builtin__', '__main__', '_ast', '_bisect', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw', '_collections', '_csv', '_functools', '_heapq', '_hotshot', '_io', '_json', '_locale', '_lsprof', '_md5', '_multibytecodec', '_random', '_sha', '_sha256', '_sha512', '_sre', '_struct', '_subprocess', '_symtable', '_warnings', '_weakref', '_winreg', 'array', 'audioop', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'datetime', 'errno', 'exceptions', 'future_builtins', 'gc', 'imageop', 'imp', 'itertools', 'marshal', 'math', 'mmap', 'msvcrt', 'nt', 'operator', 'parser', 'signal', 'strop', 'sys', 'thread', 'time', 'xxsubtype', 'zipimport', 'zlib')
例: # encoding: utf-8 # find_module.py import sys # print sys.builtin_module_names def find_module(module): if module in sys.builtin_module_names: print module," => ","__builtin__" else: print module,"=> ",__import__(module).__file__
find_module('os') find_module('sys') find_module('strop') find_module('zlib') find_module('string')
# 运行结果: os => E:\Python27\lib\os.pyc sys => __builtin__ strop => __builtin__ zlib => __builtin__ string => E:\Python27\lib\string.pyc
|