Python中sys模块详解:常用方法与变量

acdea0164138be691a389af3788077da.jpeg

更多Python学习内容:ipengtao.com

大家好,我是涛哥,今天为大家分享 Python中sys模块详解:常用方法与变量,文章2500字,阅读大约8分钟,大家enjoy~~

sys 模块是 Python 标准库中的一个核心模块,提供了与解释器进行交互的功能。了解 sys 模块的方法和变量对于更有效地管理和调试 Python 程序至关重要。本文将深入探讨 sys 模块的常用方法和变量,通过详细的示例代码,帮助大家更全面地了解并灵活运用这一关键模块。

1. 获取命令行参数

sys.argv 是一个包含命令行参数的列表,其中第一个元素是脚本的名称。

import sys

# 示例脚本名为 example.py
print("Script Name:", sys.argv[0])

# 打印所有命令行参数
print("Command Line Arguments:", sys.argv[1:])

2. 修改默认编码

sys 模块允许修改默认的字符串编码,这对于处理不同编码的数据非常有用。

import sys

# 查看默认编码
print("Default Encoding:", sys.getdefaultencoding())

# 修改默认编码为UTF-8
sys.setdefaultencoding("utf-8")

# 再次查看默认编码
print("Updated Encoding:", sys.getdefaultencoding())

3. 强制退出程序

通过 sys.exit() 可以在程序中任意位置强制退出,可传入整数参数作为退出状态码。

import sys

def example_function():
    print("Function is running.")
    sys.exit(1)

example_function()
print("This line will not be executed.")

4. 获取Python解释器版本信息

sys.version 提供了当前 Python 解释器的版本信息。

import sys

print("Python Version:", sys.version)

5. 改变模块搜索路径

sys.path 包含了一个列表,其中存储了 Python 解释器用来查找模块的路径。

import sys

# 打印当前模块搜索路径
print("Current Path:", sys.path)

# 添加新的路径
sys.path.append("/path/to/new/module")
print("Updated Path:", sys.path)

6. 重定向标准输入输出流

通过 sys.stdinsys.stdoutsys.stderr 可以重定向标准输入、标准输出和标准错误流。

import sys

# 保存原始的标准输出流
original_stdout = sys.stdout

# 重定向标准输出到文件
with open("output.txt", "w") as f:
    sys.stdout = f
    print("This will be written to output.txt")

# 恢复原始的标准输出流
sys.stdout = original_stdout
print("This will be printed to the console.")

7. 获取系统相关信息

sys 模块提供了一些关于系统的基本信息,如平台、版本等。

import sys

print("Platform:", sys.platform)
print("Version:", sys.version_info)

8. 获取当前模块

sys.modules 是一个字典,包含了当前载入的所有模块。

import sys

# 获取当前模块的信息
current_module = sys.modules[__name__]
print("Current Module:", current_module)

9. 自定义异常处理

通过 sys.exc_info() 可以获取当前异常信息,用于自定义异常处理。

import sys

try:
    x = 1 / 0
except ZeroDivisionError:
    exc_type, exc_value, exc_traceback = sys.exc_info()
    print(f"Exception Type: {exc_type}")
    print(f"Exception Value: {exc_value}")
    print(f"Exception Traceback: {exc_traceback}")

10. 清理资源

sys 模块中的 sys.exitfunc 是一个函数列表,用于在解释器退出之前执行清理操作。

import sys

def cleanup_function():
    print("Cleaning up resources.")

# 将清理函数添加到 exitfunc 列表
sys.exitfunc = cleanup_function

# 退出程序时会调用清理函数
sys.exit(0)

总结

在本文中,深入探讨了 Python 中 sys 模块的各种方法和变量,提供了全面而实用的指南。通过详实的示例代码,覆盖了命令行参数获取、编码修改、程序强制退出、Python 解释器版本查看、模块搜索路径改变、标准输入输出流重定向、系统信息获取、自定义异常处理等多个方面。这些功能不仅为开发者提供了灵活性和控制权,也为更高级的 Python 编程和系统管理任务提供了强大的支持。

sys 模块的灵活性体现在它对 Python 解释器的底层控制,从而使开发者能够更深入地了解和优化程序运行时的各个方面。通过修改模块搜索路径、重定向标准输入输出流,以及自定义异常处理等高级功能,开发者能够更好地适应不同的应用场景。

sys 模块的深入应用对于编写高效、可维护的 Python 代码至关重要。通过学习和实践本文介绍的内容,将能够更加自如地处理命令行参数、优化程序性能、实现资源清理等任务。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

  100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

2f525171242b7e2f0f3da4e779a035d8.png

点击“阅读原文”,获取更多学习内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/150921.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言 | 数组】C语言数组详解(经典,超详细)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

服务名无效。 请键入 NET HELPMSG 2185以获得更多的帮助

遇到的问题是MySQL服务没有。 因为net start 服务名,启动的是win下注册的服务。此时,我系统中并没有注册mysql到服务中。即下面没有mysql服务。 mysqld --install net start mysql

Linux_包管理_apt和apt-get、apt upgrade会自动升级内核

1、apt和apt-get 这篇文章说的很详细,【精选】一文搞清apt与apt-get的异同_apt和aptget-CSDN博客,来自于英语原文,Difference Between apt and apt-get Commands [Explained]。 简单来说,apt更容易使用(比如显示下载…

武汉凯迪正大—锂电池均衡维护仪

产品概况 KDZD885C 电池容量平衡测试系统,主要用于锂电池箱充放电测试及均衡维护,解决锂电池包单芯电压不均衡的痛点,用于快速解决锂电池电压不一致的难题,适用于各锂电池模组电压等级,集单芯放电,充电,均…

git服务器搭建

P1 kube-node2服务器 互联网已经存在的大型git服务器【版本控制服务器】 https://github.com【国外网站,速度慢】 https://about. gitlub.com/【国外网站,速度慢】 https://gitee.com【国内阿里的git网站,可以注册使用】 环境准备,使用之前的kube-node2主机&…

zabbix中监控数据,报错返回给钉钉查看

### 在钉钉中创建群聊(同组的同学创建一个群聊),在群里面添加自定义机器人 1.通过自定义webhook接入自定义服务 webhook:记住webhook的地址 安全设置:设置加签,只有信息内容包含签才会被机器人发送。 2.配置钉钉告警脚本 #### **安…

从零搭建微服务架构:Spring Boot与Nacos完美整合

🎏:你只管努力,剩下的交给时间 🏠 :小破站 从零搭建微服务架构:Spring Boot与Nacos完美整合 前言第一:服务注册与发现第二:配置中心第三:报错问题解决第四:什…

Solidity案例详解(四)投票智能合约

该合约为原创合约,功能要求如下 在⼀定时间能进⾏投票超过时间投票截⽌,并投赞同票超过50%则为通过。 使⽤safeMath库,使⽤Owner 第三⽅库拥有参与投票权的⽤户在创建合约时确定Voter 结构 要有时间戳、投票是否同意等;struct 结构…

MATLAB中uiresume函数用法

目录 语法 说明 示例 按下按钮后恢复执行 使用函数调用恢复执行 uiresume函数的功能是恢复暂停程序的执行。 语法 uiresume uiresume(f) 说明 uiresume 恢复与当前图窗 (gcf) 关联的对应 uiwait 调用暂停的程序执行。 uiresume(f) 恢复与图窗 f 关联的对应 uiwait 调用…

PbootCMS 应用快速迁移至浪潮信息 KeyarchOS 云服务器

本文我们以 PbootCMS 应用为例,详细介绍如何使用 X2Keyarch 迁移工具将其从 CentOS 系统迁移到浪潮信息 KeyarchOS 系统。 背景介绍 众所周知,CentOS 是最流行的红帽克隆版,因为免费,所以它的安装量甚至比红帽本身要大得多。本来…

人工智能如何重塑体验为先的汽车行业

面向汽车行业用户体验的 AI 人工智能的影响力继续在各个主要行业中迅速蔓延,全球各地的公司都开始大力投资 AI 技术,以提高自身的竞争优势。未来的趋势表明,企业如果不立即采用人工智能战略,就可能会远远落后于竞争对手。 AI 和…

边缘智能网关:新能源时代的数据守护者

一、新能源时代的挑战与机遇 随着全球气候变化和环境问题日益严重,新能源的开发利用成为了世界各国共同关注的焦点。新能源的发展不仅有助于减少对化石能源的依赖,降低温室气体排放,还能带动经济的可持续发展。然而,新能源的普及和…

【云栖2023】姜伟华:Hologres Serverless之路——揭秘弹性计算组

本文根据2023云栖大会演讲实录整理而成,演讲信息如下: 演讲人:姜伟华 | 阿里云计算平台事业部资深技术专家、阿里云实时数仓Hologres研发负责人 演讲主题:Hologres Serverless之路——揭秘弹性计算组 实时化成为了大数据平台的…

day23_mysql

今日内容 零、 复习昨日 一、函数[了解,会用] 二、事务[重点,理解,面试] 三、数据库范式 零、 复习昨日 见晨考 一、函数 字符串函数数学函数日期函数日期-字符串转换函数流程函数 1.1 字符串函数 函数解释CONCAT (string2 [,... ]) 连接字串LENGTH (string )string长度REPLAC…

【数据结构】单链表基本操作的实现

【单链表的头插和尾插】//无头结点 #include<stdio.h> #include<stdlib.h> typedef struct LNode {int date;struct LNode *next; }LNode,*LinkList; LinkList great_LinkList(LinkList L)//头部插入 {LinkList s;int x,j1;scanf("%d",&x);while(x…

如何使用 Github Action 管理 Issue

本文作者为 360 奇舞团前端开发工程师 Daryl 前言 很多小伙伴打开 github 上的仓库都只使用Code查看代码&#xff0c;或者只是把 github 当成一个代码仓库&#xff0c;但是 github 还提供了很多好用的功能。 其中&#xff0c;GitHub Action就是一个很好用的功能&#xff0c;本文…

基于 Amazon EKS 搭建开源向量数据库 Milvus

一、前言 生成式 AI&#xff08;Generative AI&#xff09;的火爆引发了广泛的关注&#xff0c;也彻底点燃了向量数据库&#xff08;Vector Database&#xff09;市场&#xff0c;众多的向量数据库产品开始真正出圈&#xff0c;走进大众的视野。 根据 IDC 的预测&#xff0c;…

python采集小破站视频弹幕

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用]: Python 3.8 Pycharm模块使用]: import requests 数据请求 import jieba 分词 import wordcloud 词云 import re 正则通过爬虫程序采集数据 分析数…

微信小程序渲染的富文本里面除了img标签外什么都没有,该如何设置img的大小

微信小程序富文本渲染&#xff1a; <rich-text nodes"{{content}}"style"{{style}}" ></rich-text> content是接口得到的值 let cont object.contentlet a cont.replace(/<img/gi,<img style"max-width:94%;height:auto;margi…

Kafka快速入门

文章目录 Kafka快速入门1、相关概念介绍前言1.1 基本介绍1.2 常见消息队列的比较1.3 Kafka常见相关概念介绍 2、安装Kafka3、初体验前期准备编码测试配置介绍 bug记录 Kafka快速入门 1、相关概念介绍 前言 在当今信息爆炸的时代&#xff0c;实时数据处理已经成为许多应用程序和…