资料来源:https://blog.csdn.net/swinfans/article/details/85780302
文章目录
- 动态对象
- 静态对象
- 方法
- sys.displayhook(p_object)
- sys.excepthook(type, value, traceback)
- sys.getdefaultencoding()
- sys.getfilesystemencoding
- sys.getfilesystemencodeerrors()
- sys.getdlopenflags()
- sys.getprofile()
- sys.getcheckinterval()
- sys.getrefcount(obj)
- sys.getrecursionlimit()
- sys.getsizeof()
- sys.gettrace()
- sys.setcheckinteral(n)
- sys.setdlopenflags(n)
- sys.setprofile(function)
- sys.setrecursionlimit(n)
- sys.settrace(tfunc)
动态对象
sys.argv
- 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 test_file_zhoujielun.py '第一个参数' '第二个参数' '第三个参数' 4 5 6
输出:
argv0: type is <class 'str'>, value is argv_test.py
argv1: type is <class 'str'>, value is '第一个参数'
argv2: type is <class 'str'>, value is '第二个参数'
argv3: type is <class 'str'>, value is '第三个参数'
argv4: type is <class 'str'>, value is 4
argv5: type is <class 'str'>, value is 5
argv6: type is <class 'str'>, value is 6
sys.path
- 模块的搜索路径
- sys.path[0] 表示当前脚本所在目录
- 在交互模式下,sys.path[0] 返回空字符串。
使用
import sys
print(sys.path)
输出:
['F:\\Python\\test1', 'D:\\software\\Anaconda3\\python37.zip', 'D:\\software\\Anaconda3\\DLLs',
'D:\\software\\Anaconda3\\lib', 'D:\\software\\Anaconda3', 'D:\\software\\Anaconda3\\lib\\site-packages',
'D:\\software\\Anaconda3\\lib\\site-packages\\win32', 'D:\\soft
ware\\Anaconda3\\lib\\site-packages\\win32\\lib', 'D:\\software\\Anaconda3\\lib\\site-packages\\Pythonwin']
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()
print(type(e))
exc_type, exc_value, exc_traceback = e
print(exc_type)
print(exc_value)
print(exc_value.args[0])
print(exc_traceback)
print(dir(exc_traceback))
print(exc_traceback.tb_frame)
print(exc_traceback.tb_lasti)
print(exc_traceback.tb_lineno)
print(exc_traceback.tb_next)
输出
<class 'tuple'>
<class 'ValueError'>
invalid literal for int() with base 10: 'abc'
invalid literal for int() with base 10: 'abc'
<traceback object at 0x000000000298CE08>
['tb_frame', 'tb_lasti', 'tb_lineno', 'tb_next']
<frame at 0x000000000205E9F8, file 'test_file_zhoujielun.py', line 23, code <module>>
18
5
None
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>
静态对象
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的整数
sys.maxint
- 最大的Int值
方法
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)
- 设置系统跟踪函数,用于实现调试器