Python 标准库之 sys

1. os 与 sys 库的差异

os与sys模块的官方解释如下:

  • os
    This module provides a portable way of using operating system dependent functionality.

    这个模块提供了一种方便的使用操作系统函数的方法。

  • sys
    This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter.

    这个模块可供访问由解释器使用或维护的变量和与解释器进行交互的函数。

2. sys 库常用的函数

函数说明
sys.argv命令行参数List,第一个元素是程序本身路径
sys.platform返回操作系统平台名称,在编写跨平台应用时很有用
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.modules.keys()返回所有已经导入的模块列表
sys.path返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
标准流如果需要更好地控制输出, 而print不能满足你的要求, 它们就是你所需要的.你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备(device), 或者以非标准的方式处理它们
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_infoPython版本信息
sys.displayhook(value)如果value非空,这个函数会把他输出到sys.stdout,并且将他保存进__builtin__…指在python的交互式解释器里,’‘代表上次你输入得到的结果,hook是钩子的意思,将上次的结果钩过来
sys.getdefaultencoding()返回当前你所用的默认的字符编码格式,一般默认为ascii
sys.getfilesystemencoding()返回将Unicode文件名转换成系统文件名的编码的名字
sys.setdefaultencoding(name)用来设置当前默认的字符编码,如果name和任何一个可用的编码都不匹配,抛出LookupError,这个函数只会被site模块的sitecustomize使用,一旦别site模块使用了,他会从sys模块移除
sys.builtin_module_namesPython解释器导入的模块列表
sys.executablePython解释程序路径
sys.getwindowsversion()获取Windows的版本,Windows系统中有效
sys.stdin.readline()从标准输入读一行,会读取末尾的换行符
sys.stdout.write()向标准输出写入内容,例如:sys.stdout.write(“hello world”),屏幕输出 hello world

sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

sys.path.append(“自定义模块路径”)

sys.modules 是一个全局字典,该字典是 Python 启动后就加载在内存中。每当程序员导入新的模块,sys.modules 将自动记录该模块。
当第二次再导入该模块时,Python 会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法。

In [7]: sys.version
Out[7]: '2.7.12 (default, Dec  4 2017, 14:50:18) \n[GCC 5.4.0 20160609]'

In [8]: sys.maxint
Out[8]: 9223372036854775807

In [9]: sys.maxunicode
Out[9]: 1114111

In [10]: sys.path
Out[10]:
['',
 '/usr/bin',
 '/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',
 '/home/ubuntu/.local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/IPython/extensions',
 '/home/ubuntu/.ipython']

In [11]: sys.platform
Out[11]: 'linux2'

In [12]: sys.api_version
Out[12]: 1013

In [13]: sys.version_info
Out[13]: sys.version_info(major=2, minor=7, micro=12, releaselevel='final', serial=0)
def exitfunc(value):
    print (value)
    sys.exit(0)

print "hello"

try:
    sys.exit(90)
except SystemExit as value:
    exitfunc(value)

print "world"
#	打印结果
#	hello
#	90

程序首先打印 hello,在执行 exit(90),抛异常把 90 传给 value,value 在传进函数中执行,打印 90程序退出。后面的 ”world” 因为已经退出所以不会被打印,而此时如果把 exitfunc 函数里面的sys.exit(0) 去掉,那么程序会继续执行到输出 ”world”。

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值