Python3的sys模块
Python的sys
模块提供访问由解释器使用或维护的变量的接口,并提供了一些函数用来和解释器进行交互,操控Python的运行时环境。
下面就来详细介绍下该模块中常用的属性和方法。
01 动态对象
sys.argv
传递给程序的命令行参数列表;其中,sys.argv[0]
表示脚本名称,各个参数均为字符串类型。
写一个脚本,内容如下import sys # filename:argv_test.py for i in range(len(sys.argv)):print('argv{0}: type is {1}, value is {2}'.format(i, type(sys.argv[i]), sys.argv[i]))
在命令行下运行该脚本,并提供几个参数
python argv_test.py 1 a 2 b 3 c`
输出为:
argv0: type is <class 'str'>, value is argv_test.py argv1: type is <class 'str'>, value is 1 argv2: type is <class 'str'>, value is a argv3: type is <class 'str'>, value is 2 argv4: type is <class 'str'>, value is b argv5: type is <class 'str'>, value is 3 argv6: type is <class 'str'>, value is c
sys.path
模块的搜索路径;sys.path[0]
表示当前脚本所在目录在交互模式下,
sys.path[0]
返回空字符串。>>> import sys >>> sys.path ['', '/usr/local/python3/lib/python37.zip', '/usr/local/python3/lib/python3.7', '/usr/local/python3/lib/python3.7/lib-dynload', '/usr/local/python3/lib/python3.7/site-packages'] >>> sys.path[0] ''
sys.modules
已加载的模块的字典;可以像一般的字典一样进行各种字典操作。
>>> sys.modules.keys() dict_keys(['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_abc', 'site', 'os', 'stat', '_stat', 'posixpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'types', 'importlib', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib.util', 'importlib.abc', 'importlib.machinery', 'contextlib', 'collections', 'operator', '_operator', 'keyword', 'heapq', '_heapq', 'itertools', 'reprlib', '_collections', 'functools', '_functools', 'virtualenvwrapper', 'readline', 'atexit', 'rlcompleter'])
sys.exc_info()
获取正在处理的异常的相关信息返回值为一个包含异常类、异常实例和异常回溯信息的元组
>>> import sys >>> s = 'abc' ... try: ... int(s) ... except ValueError: ... e = sys.exc_info() >>> type(e) <class 'tuple'> >>> exc_type, exc_value, exc_traceback = e >>> exc_type <class 'ValueError'> >>> exc_value ValueError("invalid literal for int() with base 10: 'abc'") >>> exc_value.args[0] "invalid literal for int() with base 10: 'abc'" >>> exc_traceback <traceback object at 0x103a4d948> >>> dir(exc_traceback) ['tb_frame', 'tb_lasti', 'tb_lineno', 'tb_next'] >>> exc_traceback.tb_frame <frame at 0x103bf4a98, file '<stdin>', line 4, code <module>> >>> exc_traceback.tb_lasti 6 >>> exc_traceback.tb_lineno 2 >>> exc_traceback.tb_next >>>
sys.last_type
返回最近一次捕获的异常的类型(只在交互式环境下可用)sys.last_value
返回最近一次捕获的异常的值(只在交互式环境下可用)sys.last_traceback
返回最近一次捕获的异常的追踪信息(只在交互式环境下可用)Traceback (most recent call last):File "<stdin>", line 1, in <module> NameError: name 'argv' is not defined >>> sys.last_type <class 'NameError'> >>> sys.last_value NameError("name 'argv' is not defined") >>> sys.last_traceback <traceback object at 0x103d38248>
02 静态对象
sys.builtin_module_names
当前解释器所有内置模块的名称sys.copyright
包含解释器版权相关信息的字符串sys.exec_prefix
用于查找特定于当前机器的python库的路径前缀sys.executable
Python解释器可执行文件的绝对路径sys.float_info
包含有关浮点数实现的信息的结构序列sys.float_repr_style
表示浮点数的repr()
方法的输出样式的字符串sys.hash_info
包含哈希算法相关信息的结构序列sys.hexversion
对sys.version_info
中包含的版本信息进行编码后使用十六进制表示的整数sys.implementation
包含有关Python实现的相关信息sys.int_info
包含有关整形实现的信息的结构序列sys.maxsize
返回字符串、列表、字典和其他内置类型的最大长度sys.maxunicode
返回能够表示的最大Unicode码点的整数值sys.platform
返回平台标识符字符串sys.prefix
返回安装平台无关Python文件的目录sys.thread_info
包含有关线程实现的信息的结构序列sys.version
表示当前解释器版本的字符串sys.version_info
当前解释器版本的命名元组sys.byteorder
本机的字节排序方式,little
表示小尾,big
表示大尾sys.api_version
返回表示Python解释器的C语言版本API的整数
03 方法
sys.displayhook(p_object)
解释器以交互模式运行时,调用该函数会打印表达式的结果sys.excepthook(type, value, traceback)
发生未捕获的异常时将调用该函数其中,
type
是异常类,value
是异常的实例,traceback
是回溯对象。默认行为是打印该异常并回溯到标准错误。不过,可以重新定义该函数来实现另一种处理未捕获异常的方法(在诸如调试器或者CGI脚本这样的专门的应用程序中可能会用到)。sys.exit(n)
通过引发SystemExit
异常来退出当前程序n
是一个表示状态码的整数退出码。0
值表示正常(默认值),非零值表示异常。如果
n
指定为一个非整数值,则将它打印到sys.stderr
并使用退出码1退出>>> sys.exit(0) # 执行后将退出交互模式 $ echo $? # 查看退出状态码 0 $ python # 重新进入python的交互模式 Python 3.7.0 (default, Jun 29 2018, 20:13:13) [Clang 9.1.0 (clang-902.0.39.2)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.exit(3) $ echo $? # 查看退出状态码 3 $ python # 重新进入python的交互模式 Python 3.7.0 (default, Jun 29 2018, 20:13:13) [Clang 9.1.0 (clang-902.0.39.2)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.exit(0.5) 0.5 $ echo $? # 查看退出状态码 1
sys.getdefaultencoding()
返回Unicode实现所使用的默认字符串编码格式sys.getfilesystemencoding
返回用于将Unicode文件名转换成操作系统使用的文件名时所用的编码格式sys.getfilesystemencodeerrors()
返回将Unicode文件名转换成操作系统使用的文件名时的错误模式sys.getdlopenflags()
返回调用C函数dlopen
时使用的标志参数的值。sys.getprofile()
返回由sys.setprofile(function)
设置的系统配置函数sys.getcheckinterval()
返回由sys.setcheckinterval()
函数设置的检查异步事件的频率sys.getrefcount(obj)
返回对象obj的引用计数>>> class Foo: pass ... >>> foo = Foo() >>> sys.getrefcount(foo) 2 >>> bar = foo >>> sys.getrefcount(foo) 3 >>> del bar >>> sys.getrefcount(foo) 2
sys.getrecursionlimit()
返回解释器的最大递归深度>>> sys.getrecursionlimit() # 查看当前解释器的最大递归深度 1000
sys.getsizeof()
获取对象占用的内存大小(用字节表示)>>> for obj in [int(), float(), list(), tuple(), set(), dict(), object]: ... print(str(obj.__class__).ljust(20), sys.getsizeof(obj)) ... <class 'int'> 24 <class 'float'> 24 <class 'list'> 64 <class 'tuple'> 48 <class 'set'> 224 <class 'dict'> 240 <class 'type'> 400
sys.gettrace()
返回由sys.settrace(function)
设置的跟踪函数sys.setcheckinteral(n)
设置python解释器每n
条指令执行一次异步事件的检查。这个设置会影响线程切换的频率sys.setdlopenflags(n)
设置调用C函数dlopen
时使用的标志参数的值sys.setprofile(function)
设置系统配置函数,用于实现源代码配置程序sys.setrecursionlimit(n)
设置解释器的最大递归深度>>> sys.getrecursionlimit() # 查看当前解释器的最大递归深度 1000 >>> sys.setrecursionlimit(1100) # 将解释器的最大递归深度设置为1100 >>> sys.getrecursionlimit() # 再次查看当前解释器的最大递归深度 1100
sys.settrace(tfunc)
设置系统跟踪函数,用于实现调试器
Python3的sys模块相关推荐
- Python3.5源码分析-sys模块及site模块导入
Python3源码分析 本文环境python3.5.2. 参考书籍<<Python源码剖析>> python官网 Python3的sys模块初始化 根据分析完成builtins ...
- sys python3 常用_python之sys模块【获取参数】
python之sys模块[获取参数] 发布时间:2019-06-13 16:19, 浏览次数:303 , 标签: python sys <>sys模块:system指的是解释器(os指的是 ...
- python3 sys模块
sys模块就是用来管理Python自身运行环境,Python就是解释器,运行在操作系统上面的程序,所以sys包,可以用来管理Python运行的参数,比如内存,文件大小等等. 另外一个重要功能就是可以和 ...
- python3(八)sys模块
sys模块 sys有几个python的内部函数和属性,sys在这里是指Python系统 sys提供python解释器的相关工作 sys模块主要处理系统相关的功能 函数 说明 sys.stdin 标准输 ...
- python sys模块作用_浅谈Python中的模块
模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...
- Python3之paramiko模块
Python3之paramiko模块 转载☞:https://www.cnblogs.com/meng-wei-zhi/p/8258674.html 参考☞:https://www.cnblogs.c ...
- 【Python3】Python模块与包的导入
[Python3]Python模块与包的导入 一.模块导入 1. 定义 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语 ...
- python中sys模块有什么用_Python sys模块用法详解
sys 模块代表了 Python 解释器,主要用于获取和 Python 解释器相关的信息. 在 Python 的交互式解释器中先导入 sys 模块,然后输入 [e for e in dir(sys) ...
- python之sys模块【获取参数】
sys模块:system指的是解释器(os指的是操作系统) 常用操作:用于接收系统操作系统调用解释器传入的参数 实验操作: 在python工具中敲入以下代码: import sys print(sys ...
- qt调用import sys库_Python模块之 sys 模块
引入 1.什么是 sys 模块 sys 模块是与 Python 解释器交互的一个接口 该模块提供对解释器使用或维护的一些变量的访问和获取 它提供了许多函数和变量来处理 Python 运行时环境的不同部 ...
最新文章
- SQL Server 数据库文件 4 点注意
- struts1.2上传多个文件
- C# 遍历 HTML元素 遍历html控件
- java 计算器 小程序_java应用小程序计算器
- 【FJOI2015】最小覆盖双圆问题
- 撤销操作 —— Git 学习笔记 12
- 关于虚拟机ubuntu多虚拟硬盘(VDMK)的使用方法
- dataframe两个表合并_R语言读取多个excel文件后合并:rbind/merge/cmd合并
- 传智播客全栈_播客:从家庭学生到自学成才的全栈开发人员
- windows下常用DOS命令
- 生成报告配置xml_升职加薪利器:Python+Pytest框架在Jenkins上生成Allure测试报告
- 深入浅出话VC++(2)——MFC的本质
- 就算给穷人一百万,他们也很难赚到一块钱利润
- [转载] Python 列表表达式
- (转载)Jvm工作原理学习笔记
- Pycharm主题基本设置
- AsyncTask与Thread+Handler的区别、AsyncTask的使用
- 中文技术文档写作规范(汇总整理版)
- 后端开发工程师的工作流程是怎样的
- 审车的时候环保怎样安全通过_车审环保过不了如何处理