Python的常用基础模块之sys模块详解

 更新时间:2023年08月01日 11:06:30   作者:Amo Xiang  
这篇文章主要介绍了Python的常用基础模块之sys模块详解,sys 模块提供访问 Python 解释器使用或维护的属性,以及与 Python 解释器进行交互的方法,需要的朋友可以参考下

一、sys模块介绍

1.1 什么是 Python 解释器

当编写 Python 代码时,通常都会得到一个包含 Python 代码的以 .py 为扩展名的文件。

要运行编写的代码,就需要使用 Python 解释器去执行 .py 文件。

因此,Python 解释器就是用来执行 Python 代码的一种工具。常见的 Python 解释器有以下几种:

  • CPython:Python 的官方解释器。

当我们从 Python 官方网站下载并安装好 Python 后,就直接获得了 CPython 解释器,该解释器是使用 C 语言开发的,所以叫 CPython。

我们在 CMD 命令窗口中运行 python 命令就是启动 CPython 解释器,如下图所示:

在这里插入图片描述

  • IPython :IPython 是基于 CPython 之上的一个交互式解释器,它执行 Python 代码的功能和 CPython 是完全一样的,唯一的区别是:CPython 用 >>> 作为提示符,而 IPython 用 In[ 序号]: 作为提示符。

在这里插入图片描述

  • PyPy :PyPy 解释器的目标是执行速度,它采用 JIT 技术,对 Python 代码进行动态编译,所以可以显著提高 Python 代码的执行速度。
  • Jython:运行在 Java 平台上的 Python 解释器,可以直接把 Python 代码编译成 Java 字节码执行。
  • IronPython :运行在微软 .NET 平台上的 Python 解释器,可以直接把 Python 代码编译成 .NET 的中间代码。

1.2 sys 模块的作用

sys 模块提供访问 Python 解释器使用或维护的属性,以及与 Python 解释器进行交互的方法。

简单来讲,sys 模块负责程序与 Python 解释器的交互,并提供了一系列的属性和方法,用于操控 Python 运行时的环境。

在 Python 程序中使用 sys 模块,首先需要使用 import 导入,代码如下:

import sys

导入 sys 模块后,就可以使用该模块提供的属性和方法了。

二、常用方法及属性介绍

2.1 modules属性

将模块名称映射到已加载模块的字典

modules 属性返回一个将模块名称映射到已加载模块的字典。语法格式如下:

sys.modules  # 返回值:返回一个字典

使用 modules 属性获取本机所有已安装的模块及所在模块文件,代码如下:

import sys
for key, value in sys.modules.items():  # 遍历所有模块字典
    print(f'{key}:{value}')  # 打印模块及所在模块文件

程序运行结果如下:

在这里插入图片描述

使用 modules 属性获取 os 模块的来源,代码如下:

import sys
# <module 'os' from 'd:\\developsoftware\\python37\\lib\\os.py'>
print(sys.modules["os"])

使用 modules 对象的 keys() 方法可以获取到所有导入的模块列表,代码如下:

import sys
print('模块列表:')
for i in sys.modules.keys():  # 遍历模块列表
    print('' + i)  # 打印模块

2.2 getdefaultencoding()方法

获取默认字符串编码名称

getdefaultencoding() 方法用于返回当前默认字符串编码的名称,语法格式如下:

sys.getdefaultencoding()

参数说明:返回值:返回类似 ascii、utf-8 或者 gbk 等的字符串,具体的值根据 site.py 模块中设置的默认编码而定。

使用 getdefaultencoding() 方法获取本地 Python 解释器使用的默认字符串编码,代码如下:

import sys
print(sys.getdefaultencoding())  # utf-8

2.3 exit()方法

退出Python

exit() 方法用于退出 Python 解释器,即退出正在运行的程序。语法格式如下:

sys.exit([arg])

参数说明:

  • arg :可选参数,该参数是一个整数,表示退出状态。0 表示正常退出,非 0 表示异常终止。如果指定为一个非整数值,则将它打印到 sys.stderr,并使用退出码 1。
  • 返回值:返回退出码,0 表示正常退出,1 表示异常退出。

说明:arg 参数的取值范围通常在 0~127 范围内,否则会产生不确定的结果。

正常退出程序的代码如下:

import sys
print(11)
sys.exit(0)

程序运行结果如下:

在这里插入图片描述

通过为 exit() 方法指定非 0 参数异常终止程序,代码如下:

import sys
print(11)
sys.exit(1)
print(22)

程序运行结果如下:

在这里插入图片描述

2.4 path属性

指定模块搜索路径

path 属性用于获取一个字符串列表,它指定模块的搜索路径。在程序启动时,此列表的第一项 path[0] 通常是 Python 脚本(.py 文件) 所在的目录。如果脚本目录不可用(例如,交互式调用解释器或者从标准输入读取脚本),则 path[0] 为空字符串,它指示 Python 首先搜索当前目录中的模块。语法格式如下:

sys.path

使用 path 属性获取 Python 解释器的模块搜索路径,并遍历输出,代码如下:

import sys
for i in sys.path:  # 遍历所有路径列表
    print(i)  # 打印遍历到的路径

程序运行结果如下:

E:\Code\lesson\python-package
E:\Code\lesson
D:\DevelopSoftware\PyCharm2021.3.3\PyCharm 2021.3.3\plugins\python\helpers\pycharm_display
d:\developsoftware\python37\python37.zip
d:\developsoftware\python37\DLLs
d:\developsoftware\python37\lib
d:\developsoftware\python37
E:\Code\scrapy_study\venv
E:\Code\scrapy_study\venv\lib\site-packages
D:\DevelopSoftware\PyCharm2021.3.3\PyCharm 2021.3.3\plugins\python\helpers\pycharm_matplotlib_backend

使用 path 属性的 append() 方法向模块搜索路径中添加 ./module,然后遍历输出最新的模块搜索路径,代码如下:

import sys
sys.path.append("./module") # 添加模块搜索路径

2.5 argv属性

程序命令行参数列表

argv 属性表示传递给 Python 脚本的命令行参数列表。argv[0] 是脚本名称(取决于操作系统是否为完整路径名)。语法格式如下:

sys.argv

通过使用 argv 属性获取 Python 解释器的命令行参数列表,并使用 argv[0] 获取 Python 脚本的完整路径,代码如下:

在这里插入图片描述

通过使用 os 模块的 fsencode() 方法获取命令行参数的原始字节,代码如下:

import sys
import os
for arg in sys.argv:
    print(os.fsencode(arg))

程序运行结果如下:

b'E:/Code/lesson/python-package/demo5_sys.py'

注意:在 Unix 系统中,命令行参数是从 OS 传递的字节。Python 使用文件系统编码和 surrogateescape 错误处理程序对它们进行解码。

2.6 platform属性

获取系统标识符

platform 属性返回一个表示系统标识符的字符串。语法格式如下:

sys.platform

操作系统及对应的 platform 值如下表所示:

在这里插入图片描述

用 platform 属性判断当前系统平台为哪个平台,代码如下:

import sys
if sys.platform == 'win32':
    print('当前是Windows平台')
elif sys.platform == 'linux':
    print('当前是Linux平台')
elif sys.platform == 'darwin':
    print('当前是Mac平台')

笔者使用的是 Windows 平台,故程序运行结果如下:

在这里插入图片描述

到此这篇关于Python的常用基础模块之sys模块详解的文章就介绍到这了,更多相关Python的sys模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python全栈之学习MySQL(1)

    Python全栈之学习MySQL(1)

    这篇文章主要为大家介绍了Python全栈之MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Python全栈之推导式和生成器

    Python全栈之推导式和生成器

    这篇文章主要为大家介绍了Python推导式和生成器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • Python实现定时执行任务的三种方式简单示例

    Python实现定时执行任务的三种方式简单示例

    这篇文章主要介绍了Python实现定时执行任务的三种方式,结合简单实例形式分析了Python使用time,os,sched等模块定时执行任务的相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • python实现批量获取指定文件夹下的所有文件的厂商信息

    python实现批量获取指定文件夹下的所有文件的厂商信息

    这篇文章主要介绍了python实现批量获取指定文件夹下的所有文件的厂商信息的方法,是非常实用的技巧,涉及到文件的读写与字典的操作等技巧,需要的朋友可以参考下
    2014-09-09
  • 教你pycharm运行Django第一个项目

    教你pycharm运行Django第一个项目

    本文主要介绍了教你pycharm运行Django第一个项目的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • 10个简单但很有用的Python装饰器分享

    10个简单但很有用的Python装饰器分享

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为,本文为大家整理了10个简单但很有用的Python装饰器,希望对大家有所帮助
    2023-08-08
  • Python分割列表list方法使用(平均n等份拆成)

    Python分割列表list方法使用(平均n等份拆成)

    本文主要介绍了Python分割列表list方法使用(平均n等份拆成),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 详解python多线程之间的同步(一)

    详解python多线程之间的同步(一)

    这篇文章主要介绍了python多线程之间的同步,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python爬虫框架-scrapy的使用

    Python爬虫框架-scrapy的使用

    Scrapy是纯python实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。这篇文章主要介绍了Python爬虫框架-scrapy的使用,需要的朋友可以参考下
    2021-04-04
  • Django权限设置及验证方式

    Django权限设置及验证方式

    这篇文章主要介绍了Django权限设置及验证方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05

最新评论