系统工具-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