系统工具-sys模块

平台与版本

>>> sys.platform
'linux'
>>> sys.maxsize
9223372036854775807
>>> sys.version
'3.6.1 (default, Jul 12 2017, 09:58:07) \n[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]'
>>> import sys
>>> sys.platform   # 底层操作系统名称
'win32'
>>> sys.maxsize    # 当前计算机上可容纳的最大的“原生”整型
9223372036854775807
>>> sys.version    # Python解释器的版本号
'3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]'

模块搜索路径

sys.path 是一个由目录名称字符串组成的列表,每个目录名称字符串代表正在运行的Python 解释器真正的搜索路径。模块导入时,Python会从左向右扫描列表,在列表中的每个目录下搜索模块文件。

sys.path 列表在解释器启动时根据PYTHONPATH设置进行初始化,电脑中Python目录下的所有.pth 路径文件的内容,以及系统默认设置。

>>> sys.path
['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', ...more deleted...]

另外,sys.path 也可以用程序进行更改。脚本可以借助多种列表操作来设置搜索路径,比如 append、extend、insert、pop、remove 和del,以便把所需的源目录全部包括进来。无论如何更改,Python在导入时总是使用当前sys.path设置:

>>> sys.path
['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']
>>> sys.path.append('/root')
>>> sys.path
['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages', '/root']

对sys.path 的更改只维持到Python 进程结束时,下次重启时,需要重新设定。

Windows在 DOS目录下,目录路径字符串中使用双反斜杠(如在"C:\\dir"中,\\ 是表示\ 的转义符),或者使用原始字符串字面量来保留反斜杠的字面意义(如 r"C:\dir")

已加载模块表

sys 模块还包含嵌入解释器的钩子。 例如, sys.modules是一个字典,你的Python会话或程序所导入的每个模块在其中都有一个name:module项:

>>> sys.modules
{'builtins': <module 'builtins' (built-in)>, ...more deleted...}

>>> list(sys.modules.keys())  
['builtins', 'sys', '_frozen_importlib', ...]

>>> sys
<module 'sys' (built-in)>
>>> sys.modules['sys']
<module 'sys' (built-in)>

另外,借助解释器的钩子,可以通过 sys.getrefcount 来查看对象的引用次数,而Python 的内置模块名称可执行 sys.builtin_module_names 列出:

>>> sys.getrefcount(sys)
49
>>> sys.builtin_module_names
('_ast', '_codecs', '_collections', '_functools', '_imp', '_io', '_locale', '_operator', '_signal', '_sre', '_stat', '_string', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', 'atexit', 'builtins', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'posix', 'pwd', 'sys', 'time', 'xxsubtype', 'zipimport')

 

sys模块导出的其他工具

sys.argv  : 显示为由字符串组成的列表的命令行参数

sys.stdin、sys.stdout和sys.stderr: 标准流

sys.exit:通过调用可强制退出

详细介绍请参考:https://docs.python.org/3/library/sys.html?highlight=sys#module-sys

posted @ 2017-08-16 20:19  追阳  阅读(217)  评论(0编辑  收藏  举报