不了解sys库也敢说Python行?sys模块这些用法你需要知道
  gX8Adzha1Ujo 2023年11月02日 41 0

前言

“不会用sys模块的Python程序员,和不会开车的司机一样令人捉急。”这句话一点没错,因为sys模块可以让你快速做到:

  1. 解析命令行参数 在运行Python程序时,我们可以在命令行中传递不同的参数,如果不用sys.argv来获取,你将很难处理程序输入。
  2. 获取Python解释器信息 要获取当前运行环境的信息,如版本号、平台等,只有调用sys.version和sys.platform这样的接口才行。
  3. 重定向标准输出入误 打印调试信息时,通过sys.stdout你可以轻松改变输出渠道。
  4. 退出程序并返回状态 用sys.exit()可以不仅退出程序,还能返回状态码,这对部署程序很重要。
  5. 获取文件系统路径 导入模块需要按sys.path搜索,这关系到代码的组织结构。

一个不谙sys模块的Python开发者就像盲人摸象,你给他再好的代码也不过瞎折腾。要成为真正的Python高手,sys模块必学不可少。 今天就跟随本文一起,深入sys的世界,提升Python实力!你将发现,它比你想象得更强大。

定义

sys模块是最常用的和python解释器交互的模块,sys模块可供访问由解释器interpreter使用或维护的变量和与解释器进行交互的函数。sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分。

常用模块

sys模块中常用的函数包括:

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

在执行Python程序时,可以在命令后加入参数,sys.argv可以用来获取命令行参数。 例如有以下Python代码:

import sys
    print(sys.argv)

在命令行Terminal中执行:

# test.py 文件为当前需要运行的py文件名
    python3 test.py hello world

那么输出的sys.argv为:

['test.py', 'hello', 'world']

不了解sys库也敢说Python行?sys模块这些用法你需要知道_Python

可以看出,sys.argv是一个列表,第一个元素是程序名,后面依次是命令行的各个参数。通过遍历sys.argv,可以解析命令行参数。

2. sys.exit(): 退出当前程序

我们可以使用sys.exit()来退出当前Python程序,并返回退出码。例如:

import sys
    print("exiting...")
    sys.exit(1)

上面代码执行后会打印出exiting...,然后程序退出,退出码为1。如果不指定退出码,默认就是0。

同时,只要执行到了sys.exit()方法后,在它之后的代码就不会再次执行到了

print("exiting........")
sys.exit(1)

def do_somethings(args):
    return args

print(do_somethings(11))

# 执行结果
>>> exiting........

最后的执行结果只会将exiting......打印出来,而后面的do_somethings()函数则不会再去执行

3. sys.version: 获取Python解释程序的版本信息

如果想获取当前Python解释器的版本信息,可以使用sys.version。例如:

import sys
    print(sys.version)

# 输出结果为
>>> 3.11.4 (tags/v3.11.4:d2340ef, Jun  7 2023, 05:45:37) [MSC v.1934 64 bit (AMD64)]

这样我们就可以知道当前Python的确切版本信息。

4. sys.platform: 返回当前程序所在平台信息

要判断当前程序运行的操作系统平台,可以使用sys.platform。它会返回一个标识当前操作系统平台的字符串,包括:

print(sys.platform)

# 在windows执行,输入结果为
>>> win32

# 在Linux执行,输入结果为
>>> linux

# 在Mac执行,输入结果为
>>> darwin

5. sys.path: 返回模块搜索路径

import模块时,sys.path用于搜索模块文件。比如要导入单元测试模块unittest,Python解释器会根据sys.path定义的路径去搜索unittest.py文件。

我们可以打印出sys.path,查看Python的模块搜索路径:

import sys
    print(sys.path)
    
# 输出结果为
>>> ['D:\\Test_Tools\\Python_demo_project', 'D:\\Test_Tools\\Python_demo_project', 'D:\\Test_Tools\\pycharm\\PyCharm 2023.1.2\\plugins\\python\\helpers\\pycharm_display', 'D:\\Test_Tools\\Python\\python311.zip', 'D:\\Test_Tools\\Python\\DLLs', 'D:\\Test_Tools\\Python\\Lib', 'D:\\Test_Tools\\Python', 'D:\\Test_Tools\\Python\\Lib\\site-packages', 'D:\\Test_Tools\\pycharm\\PyCharm 2023.1.2\\plugins\\python\\helpers\\pycharm_matplotlib_backend']

6. sys.stdin/stdout/stderr:准输入/输出/错误文件流

Python中可以通过sys.stdin、sys.stdout和sys.stderr获取标准输入、输出和错误对应的文件对象。我们可以将print输出重定向到stderr:

import sys
    print("hello", file=sys.stderr)
    
# 输入结果会显示为红色的“hello”

不了解sys库也敢说Python行?sys模块这些用法你需要知道_Python_02

这样print就会输出到标准错误而不是标准输出。

以上就是Python sys模块的常用功能介绍。通过sys模块可以方便地与Python运行环境进行交互,对开发与调试都很有帮助。推荐大家在使用Python时要重点掌握sys这个重要模块。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
gX8Adzha1Ujo
最新推荐 更多