python sys模块

资料来源:https://blog.csdn.net/swinfans/article/details/85780302

动态对象

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)

  • 设置系统跟踪函数,用于实现调试器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值