当前位置:

首页 > 编程开发 > Python常用标准库及第三方库2-sys模块

Python常用标准库及第三方库2-sys模块

一、sys模块简介前面介绍的os模块主要面向操作系统,而本篇的sys模块则主要针对的是Python解释器。sys模块是Python自带的模块,它是与Python解释器交互的一个接口。sys模块提供了许多函数和变量来处理Python运行时环境的不同部分。二、sys模块常用方法通过dir()方法可以查看sys模块中带有哪些方法:importsysprint(dir(sys))1.sys.argv-获取命令行参数sys.argv作用是实现从程序外部向程序传递参数,它能够获取命令行参数列表。arg

本文目录

    一、sys模块简介

    前面介绍的os模块主要面向操作系统,而本篇的sys模块则主要针对的是Python解释器。

    sys模块是Python自带的模块,它是与Python解释器交互的一个接口。sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分。

    二、sys模块常用方法

    通过dir()方法可以查看sys模块中带有哪些方法:

    import sys
    
    print(dir(sys))

    Python常用标准库及第三方库2-sys模块

    1.sys.argv-获取命令行参数

    sys.argv作用是实现从程序外部向程序传递参数,它能够获取命令行参数列表。argv列表包含了所有传递给脚本的参数:

    • sys.argv[0]:表示程序自身
    • sys.argv[1]:表示程序的第一个参数
    • sys.argv[2]:表示程序的第二个参数
    import sys
    
    for index, arg in enumerate(sys.argv):
    print(index, arg)

    在Python命令行执行此脚本文件(未带任何参数时),获取到的第一个元素是脚本本身。打印结果为:

    Python常用标准库及第三方库2-sys模块

    在Python命令行执行此脚本文件(带参数时),获取到的第一个元素是脚本本身,其余的是传递来的参数。打印结果为:

    Python常用标准库及第三方库2-sys模块

    2.sys.exit(n)-退出程序

    sys.exit() 基本原理

    sys.exit(n):

    • 当n为0时:正常退出
    • 当n不等于0时,非正常退出,会引发SystemExit的异常

    一般情况下,程序执行到末尾、解释器就会自动退出。此时代码里并没有调用sys.exit(0),但实际Python解释器在运行时调用sys.exit(0),运行后PyCharm编辑器会自动提示“Process finished with exit code 0”,如下:

    Python常用标准库及第三方库2-sys模块

    而当代码里调用了sys.exit(888),即传入一个非0的整数,此时运行后PyCharm编辑器会提示“Process finished with exit code 888”,如下:

    Python常用标准库及第三方库2-sys模块

    而当在代码里调用了sys.exit(n)后,表示程序会退出,不管n是否等于0 ,即不管是正常退出还是异常退出,其后的语句都不会执行,也就是不会执行"print("Python sys.exit() 用法示例")"这句。从下面的图中也能看出,sys.exit(888)后的语句在PyCharm编辑器中已经泛黄提示(正常语法规范的话是不会泛黄提示的),并且运行结果也确实没有执行sys.exit(888)后的语句:

    Python常用标准库及第三方库2-sys模块

    sys.exit() 适用场景-控制程序中途退出

    一般情况下,执行到主程序末尾,解释器就会自动退出。上面的例子已经告诉我们,如果想要中途退出,先调用sys.exit(),再调用其他语句是行不通的,编辑器会警告提示。

    如果想要自由地控制程序是否在中途退出,可以使用"sys.exit(n)+捕获异常"的方式。其中,n可以是一个整数参数,也可以是字符串参数,当n为非0的值时,就会抛出SystemExit异常,可以在主程序中对其进行捕获:

    # sys.exit()用法示例
    def exit_function(value):
    print("sys.exit()捕获到的value是%s" % value)
    sys.exit(0)
    
    
    print("start sys")
    
    try:
    sys.exit(888)
    except SystemExit as value:
    exit_function(value=value)
    
    print("end sys")

    ① 程序中途退出示例

    执行结果如下:

    Python常用标准库及第三方库2-sys模块

    执行过程分析:

    1. 程序先执行print("start sys")
    2. 紧接着执行try语句,调用sys.exit(888)
    3. 随后捕获系统异常,捕获到的SystemExit异常的value值为888
    4. 最后调用exit_function函数,将value值888传递给exit_function函数
    5. 在exit_function函数中,执行语句、打印捕获到的value值,最后再调用sys.exit(0),退出程序

    ② 程序中途不退出示例

    上个示例的执行结果可以看到在exit_function函数中调用sys.exit(0),此时程序就会退出,不会再执行print("end sys"),而当在exit_function函数中注释掉sys.exit(0),则会继续执行最后的代码print("end sys"),即:程序中途不退出,如下所示:

    Python常用标准库及第三方库2-sys模块

    3.sys.platform-获取当前Python运行平台

    基本用法

    print(sys.platform)

    Windows下运行:

    Python常用标准库及第三方库2-sys模块

    Linux下运行:

    Python常用标准库及第三方库2-sys模块

    除了sys.platform外,通过platform.system()也可以获取到当前系统平台:

    Windows下运行:

    Python常用标准库及第三方库2-sys模块

    Linux下运行:

    Python常用标准库及第三方库2-sys模块

    适用场景

    我们都知道Python是跨平台语言,只要操作系统安装了Python环境,那么同一份Python代码就可以既运行在Linux上,也可以运行在Windows上,亦或是Mac上。

    而使用sys.platform或platform.system()获取到当前系统平台名称后,我们就可以针对性地作出不同操作,例如:

    linux_content = "111111"
    windows_content = "222222"
    
    # 平台为Linux,执行逻辑1、发送文本1到指定邮件
    if platform.system() == "Linux":
    send_email(linux_content)
    # 平台为Windows,执行逻辑2、发送文本2到指定邮件
    elif platform.system() == "Windows":
    send_email(windows_content)

    4.sys.path-返回Python相关路径

    基本用法

    sys.path是Python的搜索模块的路径集,供Python从中查找模块,返回一个list。

    print(sys.path)

    Python常用标准库及第三方库2-sys模块

    适用场景

    如果是在IDE中执行Python程序,编译器会自动把当前项目的根目录加入到包查找路径中,可以理解为添加到环境变量下,所以直接执行是没有问题的。但是在cmd或是Terminal控制台中直接使用Python相关命令来执行程序,则不会自动将当前项目加入到PYTHONPATH环境变量下,如果涉及到import其他文件夹下的变量就会报类似"ModuleNotFoundError: No module named 'xxxx'"这样的错误。

    解决方法:通过sys.path.append()方法将当前项目的根目录添加到系统环境变量中:

    import sys
    
    root_path = os.path.dirname(os.path.realpath(__file__))
    sys.path.append(root_path)

    5.sys.stdin与sys.stdout

    • Stdin:标准输入
    • Stdout:标准输出
    • Stderr:错误流

    sys.stdin 与 input()

    在Python中, input() 等价于 sys.stdin.readline()

    ① 先来看看使用input()的实现效果

    # sys.stdin 与 input
    number = input("please input a number:")
    print("your input number is %s" % (number))

    执行效果如下:

    Python常用标准库及第三方库2-sys模块

    ② 再来看看使用sys.stdin.readline()的实现效果

    print("please input a number:",)# 逗号表示不换行
    nn = sys.stdin.readline()
    print("your input number is %s" % (nn))

    执行效果如下:

    Python常用标准库及第三方库2-sys模块

    sys.stdout 与 print()

    在Python中, print() 等价于 sys.stdout.readline()

    ① 先来看看使用print()的实现效果

    # sys.stdout 与 print
    print("hello world")

    执行效果如下:

    Python常用标准库及第三方库2-sys模块

    ② 再来看看使用sys.stdin.write()的实现效果

    sys.stdout.write("hello world")

    执行效果如下:

    Python常用标准库及第三方库2-sys模块

    所以综上所述,input()+print() 结合的代码语句即可使用sys.stdin.readline()+sys.stdin.write()代替,如下:

    sys.stdout.write("please input a number: n")
    number = sys.stdin.readline()
    sys.stdout.write("your input number is %s" % number)

    执行效果如下:

    Python常用标准库及第三方库2-sys模块

    6.sys模块其他用法

    • sys.version:获取Python解释器版本
    • sys.exc_info():返回异常信息三元元组
    • sys.getdefaultencoding():获取系统当前编码,默认为utf-8
    • sys.setdefaultencoding():设置系统的默认编码
    • sys.getfilesystemencoding():获取文件系统使用编码方式,默认是utf-8
    • sys.modules:以字典的形式返回所有当前Python环境中已经导入的模块
    • sys.copyright:当前Python的版权信息
    • sys.getrefcount(object):返回对象的引用数量
    • sys.getrecursionlimit():返回Python最大递归深度,默认1000
    • sys.getsizeof(object[, default]):返回对象的大小
    • sys.getwindowsversion():返回当前windwos系统的版本信息

    小结

    sys模块是Python自带的模块,主要用于与Python解释器交互。它自带了很多方法或属性,其中:

    1.sys.argv作用是实现从程序外部向程序传递参数,它能够获取命令行参数列表。argv列表包含了所有传递给脚本的参数:

    • sys.argv[0]:表示程序自身
    • sys.argv[1]:表示程序的第一个参数
    • sys.argv[2]:表示程序的第二个参数

    2.sys.exit(n)作用是退出程序:

    • 当n为0时:正常退出
    • 当n不等于0时,非正常退出,会引发SystemExit的异常

    sys.exit(n)经常与捕获SystemExit异常一起使用,用来控制程序是否自由地中途退出;

    3.sys.platform作用是获取当前Python运行平台,类似于platform.system(),常用来针对性地对不同操作系统作出不同的操作逻辑;

    4.sys.path是Python的搜索模块的路径集,通过sys.path.append()方法将当前项目的根目录添加到系统环境变量中,可以用来解决找不到模块的报错情况;

    5.在Python中, input() 等价于 sys.stdin.readline(),print() 等价于 sys.stdout.readline()。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。