首页 > 编程语言 >不了解sys库也敢说Python行?sys模块这些用法你需要知道

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

时间:2023-08-11 21:35:06浏览次数:46  
标签:Python sys print 模块 Test Tools

前言

“不会用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模块这些用法你需要知道_Test

可以看出,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模块这些用法你需要知道_搜索_02

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

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

标签:Python,sys,print,模块,Test,Tools
From: https://blog.51cto.com/u_16219897/7052772

相关文章

  • 【python技巧】文本文件的读写操作
    【python技巧】文本文件的读写操作0.背景最近在写后端接口的时候,需要对.c、.conf等类型的文件进行读写操作,在这里整理一下学习收获。1.file库的文件操作file库是python中用于处理文件的读取、修改等操作,引入方式为importfile1.1打开文件---file.open()使用open()函数......
  • Auth模块的使用
    Auth模块的使用Auth模块:Auth模块是Django自带的用户认证模块我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。Django作为一个完美主义者的终极框架,当然也......
  • python 监控一个程序是否启动, 启动就关掉这个程序
    要监控一个程序是否启动,并在启动后关闭该程序,可以使用Python的subprocess模块来实现。下面是一个示例代码:importsubprocessimporttime​defcheck_and_close_program(program_name):process=subprocess.Popen(["pgrep",program_name],stdout=subprocess.PIPE,stde......
  • 解锁Python集合的妙用:常用函数与实例深度解析
    Python的集合(Set)是一种无序且不重复的数据结构,拥有强大的去重和集合运算功能。在这篇博客中,我们将深入探讨集合的常用函数,并通过实际案例为你展示其灵活应用。创建集合集合可以通过花括号来创建,也可以使用内置函数set()来转换其他可迭代对象为集合。#创建集合my_set={1,2,3}......
  • python3 定时处理任务的问题?
    作者:27RRRR链接:https://www.zhihu.com/question/30944800/answer/2317117095来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。如果你想在Linux服务器上周期性地执行某个Python脚本,最出名的选择应该是Crontab脚本,但是Crontab具有以下缺点:1.不......
  • 通过python的pymongo连接MongoDB数据库最新方式
    首先导入需要的模块功能fromurllibimportparsefrompymongoimportMongoClient使用pymongo的客户端进行链接self.host="168.9.5.27"self.port=27017self.user="Mr.baba"self.password="PLA_No.1"......
  • MT6753|MTK6753核心板_安卓4G模块性能参数
    MT6753/MTK6753是一款64位8核高性能的4G全网通安卓智能模块。这款模块支持多种网络制式,包括2G/3G/4G移动、联通、电信等。它是面向全球市场的智能无线通信模块,支持TDD-LTE/FDD-LTE/WCDMA/TD-SCDMA/EVDO/CDMA1X/GSM等七种网络制式。MT6753/MTK6753核心板内置了64位8核A53架构的CPU,拥......
  • E710四通道测温模块的特性及应用
    E710四通道测温模块是一款高性能的嵌入式读写模块,完全自主知识产权设计,结合专有的高效碰撞处理算法,在保持高识读率的同时,实现对电子标签的快速读写处理,准确读取RFID测温芯片的数据,可广泛应用电网高压变电、低压配电设施的关键温度监测点,机房、产线、设备等需要温度监测点等多种无......
  • MT6853天玑720MTK安卓核心板_5G智能模块安卓主板开发板定制
    联发科MT6853天玑720安卓核心板采用台积电7nm制程的5GSoC,具有先天的节能创新是同类产品中效率最高的5G芯片。除了完全集成的5G调制解调器,联发科5GUltraSave提供了一系列额外的节能技术。Dimensity720比替代芯片具有更快的LPDDR4X和更快的UFS2.2级存储。与八核CPU一起,具有两个强......
  • Python黑魔法 --- 协程分解与封装
    Python黑魔法---异步IO(asyncio)协程pythonasyncio网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程。无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态。使用协程可以实现高效的并发任务。Python的在3.4中引入了......