目录
一、sys模块简介
二、sys模块常用方法
1.sys.argv-获取命令行参数
2.sys.exit(n)-退出程序
sys.exit() 基本原理
sys.exit() 适用场景-控制程序中途退出
3.sys.platform-获取当前Python运行平台
基本用法
适用场景
4.sys.path-返回Python相关路径
5.sys.stdin与sys.stdout
sys.stdin 与 input()
sys.stdout 与 print()
6.sys模块其他用法
小结
首页 后端开发 Python教程 Python常用标准库及第三方库2-sys模块

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

Apr 10, 2023 pm 02:56 PM
python 模块 2-sys

一、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()。

以上是Python常用标准库及第三方库2-sys模块的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

xml格式怎么打开 xml格式怎么打开 Apr 02, 2025 pm 09:00 PM

用大多数文本编辑器即可打开XML文件;若需更直观的树状展示,可使用 XML 编辑器,如 Oxygen XML Editor 或 XMLSpy;在程序中处理 XML 数据则需使用编程语言(如 Python)与 XML 库(如 xml.etree.ElementTree)来解析。

有没有免费的手机XML转PDF工具? 有没有免费的手机XML转PDF工具? Apr 02, 2025 pm 09:12 PM

没有简单、直接的免费手机端XML转PDF工具。需要的数据可视化过程涉及复杂的数据理解和渲染,市面上所谓的“免费”工具大多体验较差。推荐使用电脑端的工具或借助云服务,或自行开发App以获得更靠谱的转换效果。

有什么手机APP可以将XML转换成PDF? 有什么手机APP可以将XML转换成PDF? Apr 02, 2025 pm 08:54 PM

无法找到一款将 XML 直接转换为 PDF 的应用程序,因为它们是两种根本不同的格式。XML 用于存储数据,而 PDF 用于显示文档。要完成转换,可以使用编程语言和库,例如 Python 和 ReportLab,来解析 XML 数据并生成 PDF 文档。

XML修改内容需要编程吗 XML修改内容需要编程吗 Apr 02, 2025 pm 06:51 PM

修改XML内容需要编程,因为它需要精准找到目标节点才能增删改查。编程语言有相应库来处理XML,提供API像操作数据库一样进行安全、高效、可控的操作。

xml格式化工具推荐 xml格式化工具推荐 Apr 02, 2025 pm 09:03 PM

XML格式化工具可以将代码按照规则排版,提高可读性和理解性。选择工具时,要注意自定义能力、对特殊情况的处理、性能和易用性。常用的工具类型包括在线工具、IDE插件和命令行工具。

怎么在手机上把XML文件转换为PDF? 怎么在手机上把XML文件转换为PDF? Apr 02, 2025 pm 10:12 PM

不可能直接在手机上用单一应用完成 XML 到 PDF 的转换。需要使用云端服务,通过两步走的方式实现:1. 在云端转换 XML 为 PDF,2. 在手机端访问或下载转换后的 PDF 文件。

XML如何修改注释内容 XML如何修改注释内容 Apr 02, 2025 pm 06:15 PM

对于小型XML文件,可直接用文本编辑器替换注释内容;对于大型文件,建议借助XML解析器进行修改,确保效率和准确性。删除XML注释时需谨慎,保留注释通常有助于代码理解和维护。进阶技巧中提供了使用XML解析器修改注释的Python示例代码,但具体实现需根据使用的XML库进行调整。修改XML文件时注意编码问题,建议使用UTF-8编码并指定编码格式。

xml格式如何美化 xml格式如何美化 Apr 02, 2025 pm 09:57 PM

XML 美化本质上是提高其可读性,包括合理的缩进、换行和标签组织。其原理是通过遍历 XML 树,根据层级增加缩进,并处理空标签和包含文本的标签。Python 的 xml.etree.ElementTree 库提供了方便的 pretty_xml() 函数,可以实现上述美化过程。

See all articles