30天拿下Python之sys模块

简介: 30天拿下Python之sys模块

概述

在上一节,我们介绍了Python的os模块,包括:os模块中一些常用的属性和函数。在这一节,我们将介绍Python的sys模块。sys模块提供了访问解释器使用或维护的变量,以及与解释器进行交互的函数。 通俗来讲,sys模块负责程序与Python解释器的交互,提供了一系列的函数和变量,用于操控Python运行时的环境。比如:它提供了一些与Python解释器交互的方法,包括:获取命令行参数、处理Python解释器的退出等。

下面,我们将逐一介绍sys模块中一些常用的属性和函数。

sys.version属性

sys.version是一个包含Python解释器版本号和编译版本号等额外信息的字符串,它会在Python交互式解释器启动时显示。

import sys
# 输出:3.11.4 (tags/v3.11.4:d2340ef, Jun  7 2023, 05:45:37) [MSC v.1934 64 bit (AMD64)]
print(sys.version)


sys.version_info属性

sys.version_info是一个元组,包含了五个部分的信息,分别为:主版本号、次版本号、微版本号、发行级别('alpha'、'beta'、'candidate' 或 'final')和序列号。比如:对于Python 3.8.5,sys.version_info将返回(3, 8, 5, 'final', 0)。返回的元组可以用于比较Python版本。

import sys
# 输出:sys.version_info(major=3, minor=11, micro=4, releaselevel='final', serial=0)
print(sys.version_info)
if sys.version_info < (3, 0):
    print('can only run in Python 3.x')
    sys.exit()
else:
    print('Python version passed')


sys.platform属性

sys.platform是一个字符串,用于表示Python解释器正在其上运行的平台。如果你的Python解释器运行在Windows上,sys.platform的值将是'win32';如果你的Python解释器运行在Linux或Mac OS上,sys.platform的值将是'darwin'或'linux2'。

该属性可以用来编写依赖于特定操作系统的代码,比如:如果我们需要使用一些只在Windows上可用的库或者功能,可以先检查sys.platform的值,然后根据需要选择使用哪个库或者功能,或者给用户一个提示,让他们知道程序无法在当前的操作系统上运行。

import sys
# 输出:win32
print(sys.platform)


sys.path属性

sys.path是一个Python列表,包含了许多目录。当我们尝试导入一个模块时,Python会在这个列表中寻找那个模块。该列表的初始值来自于以下三个方面:输入脚本的目录、PYTHONPATH环境变量、安装的默认路径。可以修改这个列表,以便Python能在我们指定的目录中查找模块。比如:如果模块在一个非标准的目录中,我们可以将那个目录添加到sys.path中,这样Python就能找到它了。

注意:修改sys.path只会影响当前Python进程的行为,不会影响其他进程或Python解释器。

import sys
# 输出:['F:\\',  
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311\\python311.zip',  
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311\\DLLs',  
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311\\Lib',  
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311',  
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages']
print(sys.path)


sys.argv属性

sys.argv是一个Python列表,包含了命令行参数。该列表的第一个元素是脚本名,也就是被调用的程序的名字,其余的元素是从命令行传递给程序的参数。比如:如果运行python test.py arg1 arg2,那么sys.argv将会是['test.py', 'arg1', 'arg2']。我们可以使用sys.argv来获取命令行参数,并根据需要对其进行处理。

import sys
# 输出:['F:\\test.py']
print(sys.argv)


sys.stdout属性

sys.stdout是一个Python文件对象,代表了系统的标准输出流。可以像操作文件一样操作sys.stdout,比如:写入文本。写入sys.stdout的内容将会被输出到控制台,也就是终端或者命令行窗口。注意:虽然我们可以像操作文件一样操作sys.stdout,但是并不建议这样做,因为这可能会导致一些难以预料的问题。如果需要输出文本,最好使用print()函数,而不是直接操作sys.stdout。

import sys
# 输出:Hello, World
sys.stdout.write('Hello, World\n')


sys.maxsize属性

sys.maxsize是一个Python整数,用于表示Python可以处理的最大整数。这个值是根据Python的位数和配置来确定的:在32位Python中,sys.maxsize的值是2147483647(也就是2的31次方减1);在64位Python中,sys.maxsize的值是9223372036854775807(也就是2的63次方减1)。sys.maxsize可以用于检查一个整数是否会在加法或乘法等操作后溢出,如果你尝试添加一个大于sys.maxsize的数到一个整数,Python会抛出一个OverflowError错误。

import sys
# 输出:9223372036854775807
print(sys.maxsize)


sys.exit()函数

sys.exit()函数用于引发一个系统退出,它接受一个可选参数,这个参数可以是一个整数,或者一个异常对象。如果参数是一个整数,那么这个整数会被用作Python解释器的退出状态;如果参数是一个异常对象,那么这个异常会被抛出;如果没有给这个函数提供任何参数,或者参数是None,那么Python解释器会退出,并且返回状态码0。该函数通常在想要立即结束程序,或者在程序中处理致命错误时使用。

import sys
a = 10
if a > 6:
    sys.exit(0)
else:
    print(a)


sys.getfilesystemencoding()函数

sys.getfilesystemencoding()函数用于返回文件系统的默认编码,该函数取代了sys.getdefaultencoding()函数。

import sys
# 输出:utf-8
print(sys.getfilesystemencoding())


sys.getrecursionlimit()函数

sys.getrecursionlimit()函数用于返回Python解释器当前的递归深度限制。这个限制是一种防止无限递归导致程序崩溃的保护机制。在Python中,每次函数调用都会在调用栈中增加一个新的栈帧,每个栈帧都会占用一些内存。如果函数调用层次过深,就会导致调用栈溢出,程序崩溃。注意:虽然可以使用sys.setrecursionlimit(limit)来提高这个限制,但是一般不建议这么做,因为这可能会导致大量的内存被占用,甚至导致程序崩溃。

import sys
# 输出:1000
print(sys.getrecursionlimit())
相关文章
|
14天前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
53 4
|
8天前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
88 0
|
2月前
|
存储 安全 数据处理
Python 内置模块 collections 详解
`collections` 是 Python 内置模块,提供多种高效数据类型,如 `namedtuple`、`deque`、`Counter` 等,帮助开发者优化数据处理流程,提升代码可读性与性能,适用于复杂数据结构管理与高效操作场景。
103 0
|
11月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
320 62
|
3月前
|
数据安全/隐私保护 Python
抖音私信脚本app,协议私信群发工具,抖音python私信模块
这个实现包含三个主要模块:抖音私信核心功能类、辅助工具类和主程序入口。核心功能包括登录
|
6月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
237 14
|
10月前
|
Python
Python Internet 模块
Python Internet 模块。
210 74
|
7月前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
86 8
|
7月前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 &quot;hello world!&quot; 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
103 5
|
11月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
269 63

推荐镜像

更多