1. sys 模块
sys.argv
:获取终端输入参数
# s1.py
import sys
print(sys.argv)
终端执行:
>>> python3 s1.py hello python
['s1.py', 'hello', 'python'] # 第一个元素为要执行的程序本身,后面的是命令中后面的参数
-
sys.modules.keys()
:查看当前导入的模块信息 -
sys.exit()
:退出程序
sys.exit(0) # 正常退出
sys.exit('bye') # 打印一个 bye 并退出
sys.exc_info()
:查看异常信息
try:
d = i + 1
except Exception as e:
print(sys.exc_info())
运行结果:
# 错误类型、错误信息、错误追溯 exc_type、exc_value、exc_traceback
(<class 'NameError'>, NameError("name 'i' is not defined",), <traceback object at 0x00000287F9CBF4C8>)
- 其他命令:
sys.hexversion # 查看 Python 解释器版本值
sys.version # 查看 Python 解释器版本信息
sys.maxsize # 最大的 Int 值
sys.platform # 返回操作系统平台名称
sys.path # 返回模块的搜索路径,列表形式,初始化时使用PYTHONPATH环境变量的值
sys.stdout # 标准输出
sys.stdin # 标准输入
sys.stderr # 错误输出
sys.getrecursionlimit() # 获取最大递归深度
sys.setrecursionlimit(1500) # 修改递归最大深度
sys.getdefaultencoding() # 获取解释器默认编码
sys.getfilesystemencoding() # 获取内存数据存在文件的默认编码
2. importlib 模块
2.1 动态导入模块
支持字符串导入模块
foo.py
class Func:
def __init__(self):
self.test()
def test(self):
print(__name__)
test.py
import importlib
def dynamic_import(module):
return importlib.import_module(module)
if __name__ == '__main__':
result = dynamic_import('foo') # 以字符串形式导入 foo.py
print(result)
result.Func() # 调用 foo.py 中的 Func() 类
运行结果如下:
<module 'foo' from 'E:\\Python_virtualenvs\\for_django\\Projects\\算法\\importlib 模块\\foo.py'>
foo
2.2 模块导入检查
导入模块之前检查模块是否存在
import importlib
import importlib.util
def check_module(module_name):
module_spec = importlib.util.find_spec(module_name)
if module_spec:
print('模块 %s 导入成功' % module_name)
return module_spec
else:
print('导入不存在模块 %s ' % module_name)
return None
if __name__ == '__main__':
module_spec = check_module('fake_module')
module_spec = check_module('foo')
print(module_spec)
if module_spec:
module = importlib.util.module_from_spec(module_spec)
print(module)
运行结果:
导入不存在模块 fake_module
模块 foo 导入成功
ModuleSpec(name='foo', loader=<_frozen_importlib_external.SourceFileLoader object at 0x000001DBEF9BC198>, origin='E:\\Python_virtualenvs\\for_django\\Projects\\算法\\importlib 模块\\foo.py')
<module 'foo' from 'E:\\Python_virtualenvs\\for_django\\Projects\\算法\\importlib 模块\\foo.py'>