python:sys模块

Python sys 模块学习笔记
sys 模块是 Python 标准库中的一个核心模块,提供了与 Python 解释器及其环境相关的功能。

1. sys.argv

  sys.argv 是一个包含命令行参数的列表,其中第一个元素是脚本名称,之后的元素是在运行脚本时传递的参数。

# example_script.py
import sys# 获取命令行参数
arguments = sys.argv# 打印脚本名称
script_name = arguments[0]
print("脚本名称:", script_name)# 打印其他命令行参数
if len(arguments) > 1:print("其他命令行参数:")for arg in arguments[1:]:print(arg)
else:print("没有其他命令行参数传递.")

假设运行以下命令:

python example_script.py arg1 arg2 arg3

脚本将输出:

脚本名称: example_script.py
其他命令行参数:
arg1
arg2
arg3

这说明 sys.argv 中的第一个元素是脚本的名称,而其余的元素是在运行脚本时传递的参数。

2. sys.exit(n)

sys.exit(n) 是 Python 中用于退出程序的方法。它接受一个整数参数 n,表示程序的退出状态码。通常,如果程序成功执行,退出状态码为 0;如果有错误或异常,可以选择使用其他非零状态码。

下面是一个简单的例子:

import sysdef main():try:# 一些代码执行result = 42 / 0except ZeroDivisionError:print("发生除零错误")sys.exit(1)  # 退出状态码为 1 表示错误print("程序正常执行完成")sys.exit(0)  # 退出状态码为 0 表示成功if __name__ == "__main__":main()

  在这个例子中,如果发生除零错误,程序会打印错误消息并用 sys.exit(1) 退出,表示程序执行出现了错误。如果没有错误,程序会顺利执行,最后使用 sys.exit(0) 退出,表示成功执行。

  请注意,sys.exit(n) 会引发 SystemExit 异常,因此在使用时要注意处理可能的异常。

3.sys.getdefaultencoding()

  sys.getdefaultencoding() 是 Python 中 sys 模块提供的一个函数,用于获取当前 Python 解释器的默认字符编码。

  在 Python 中,字符串是以 Unicode 编码进行处理的,但在输入输出、文件读写等操作时,需要进行编码和解码。sys.getdefaultencoding() 返回的是当前 Python 解释器默认的字符编码,用于指示字符串在这些操作中的默认编码方式。

  通常情况下,Python 的默认字符编码是 ‘utf-8’。但是,这可能会因为系统环境、Python 版本等因素而有所不同。使用sys.getdefaultencoding() 可以查看当前环境下的默认字符编码。

下面是一个简单的示例:

import sysdefault_encoding = sys.getdefaultencoding()
print(f"Default Encoding: {default_encoding}")

这段代码会打印当前 Python 解释器的默认字符编码。如果你的系统和 Python 版本都采用默认设置,那么它应该显示 ‘utf-8’。

4. sys.setdefaultencoding()

  在 Python 3 中,sys.setdefaultencoding() 函数已经被移除,因为在 Python 3 中,字符串的处理方式更为一致,使用 Unicode 进行编码,而不再需要设置默认的字符串编码。

  在 Python 2 中,sys.setdefaultencoding() 是用来设置默认字符串编码的函数。它允许你改变默认的字符串编码,但这在 Python 3 中被认为是不推荐的做法,因为 Python 3 更强调统一的 Unicode 字符串。

  在 Python 3 中,使用 Unicode 字符串,并根据需要进行编码和解码。以下是一个简单的例子,演示如何在 Python 3 中使用 Unicode 字符串:

# -*- coding: utf-8 -*-# 定义一个 Unicode 字符串
unicode_string = "你好,世界!"# 将 Unicode 字符串编码成字节串(bytes)
encoded_bytes = unicode_string.encode('utf-8')
print("Encoded Bytes:", encoded_bytes)# 将字节串解码为 Unicode 字符串
decoded_string = encoded_bytes.decode('utf-8')
print("Decoded String:", decoded_string)

  在这个例子中,我们首先定义了一个 Unicode 字符串 unicode_string。然后,我们使用 encode() 方法将它编码成字节串(bytes),并使用 decode() 方法将字节串解码为 Unicode 字符串。请注意,我们指定了编码方式为 ‘utf-8’,这是一种常用的 Unicode 字符串编码方式。

5. sys.path

  sys.path 是一个包含用于导入模块的目录名称的列表。当你尝试导入一个模块时,Python 解释器会搜索这些目录以查找模块文件。

以下是关于 sys.path 的一些常见用法和示例:

查看当前 Python 解释器的模块搜索路径:

import sys
print(sys.path)

这将打印出一个列表,其中包含了 Python 解释器用于查找模块的目录。

将自定义目录添加到 sys.path 中:

import sys# 添加自定义目录到 sys.path
custom_path = '/path/to/your/directory'
sys.path.append(custom_path)# 查看更新后的 sys.path
print(sys.path)

通过将自定义目录添加到 sys.path 中,可以让 Python 解释器在搜索模块时包括这个目录。

临时修改 sys.path,在特定上下文中使用自定义路径:

import sys# 保存当前 sys.path
original_path = sys.path.copy()try:# 临时修改 sys.pathcustom_path = '/path/to/your/temporary/directory'sys.path.append(custom_path)# 在这里执行需要使用自定义路径的代码finally:# 恢复原始的 sys.pathsys.path = original_path

  这个例子演示了如何在特定上下文中临时修改 sys.path,并在执行完代码后将其恢复到原始状态。这样可以避免全局修改 sys.path 导致的潜在问题。

  请注意,在实际开发中,应该避免过度修改 sys.path,并采用更稳健的模块导入和包管理方法,例如使用虚拟环境、pip 安装依赖等。

6.sys.platform

  sys.platform 是一个字符串,表示当前运行 Python 解释器的平台。它返回的字符串标识了操作系统类型。以下是一些可能的 sys.platform 返回值:

'darwin': 表示 macOS
'linux': 表示 Linux
'win32': 表示 Windows
'cygwin': 表示 Cygwin(在 Windows 上运行的 POSIX 环境)
'sunos5': 表示 Solaris

示例:

import sysplatform = sys.platform
print(f"The platform is: {platform}")

  这将输出当前运行 Python 解释器的平台。你可以使用这个信息来编写与操作系统相关的代码,以便在不同平台上执行不同的操作。例如,可以根据平台选择合适的文件路径分隔符等。

7.sys.modules

  sys.modules 是一个字典,其中包含当前 Python 解释器中所有已导入的模块的缓存。字典的键是模块的名称,而值是对该模块的引用。这个字典提供了一种查看当前解释器中已加载的模块的方式。

示例:

import sys# 导入一个模块
import math# 获取已导入模块的字典
modules_dict = sys.modules# 打印模块字典的一部分
print("Some modules in sys.modules:")
for module_name, module_ref in list(modules_dict.items())[:5]:print(f"{module_name}: {module_ref}")

  在这个例子中,math 模块被导入后,你可以在 sys.modules 字典中找到它。这对于检查已加载的模块以及防止重复导入同一模块很有用。

8.sys.stdin,sys.stdout,sys.stderr

  sys.stdin,sys.stdout 和 sys.stderr 是 sys 模块中的三个文件对象,分别用于标准输入、标准输出和标准错误。

  1. sys.stdin: 这是一个类似文件的对象,用于接收用户的输入。默认情况下,它连接到终端(键盘输入)。
  2. sys.stdout: 这是一个类似文件的对象,用于标准输出。默认情况下,它连接到终端(屏幕输出)。
  3. sys.stderr: 这是一个类似文件的对象,用于标准错误输出。与 sys.stdout 类似,但通常用于输出错误和警告信息。

这些对象可以重定向,以便在程序运行时改变输入源、输出目标和错误处理。

示例:

import sys# 保存原始的输出对象
original_stdout = sys.stdout# 重定向标准输出到文件
with open('output.txt', 'w') as file:sys.stdout = fileprint("This goes to output.txt")# 恢复原始的输出对象
sys.stdout = original_stdout# 重定向标准错误到文件
with open('error.txt', 'w') as file:sys.stderr = fileprint("This goes to error.txt")# 恢复原始的错误输出对象
sys.stderr = sys.__stderr__

在这个例子中,标准输出被重定向到文件 “output.txt”,标准错误被重定向到文件 “error.txt”。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言可变参数输入

本博文源于笔者正在学习的可变参数输入&#xff0c;可变参数是c语言函数中的一部分&#xff0c;下面本文就以一个很小的demo演示可变参数的编写 问题来源 想要用可变参数进行多个整数相加 方法源码 #include<stdio.h> #include<stdlib.h> #include<stdarg.h…

接口测试基础(超详细)

一、HTTP 1、http请求头和响应头包含那些内容&#xff1f; 请求头信息 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。 2、常用的请求报头如下&#xff1a; Accept&#xff1a;浏览器可接受的MIME类型。 l MIME用于设定某种扩展名的文件用哪种应用程…

Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive

说明 ZookeeperHadoopSparkFlinkKafkaHbaseHive 完全分布式高可用集群搭建 下载 https://archive.apache.org/dist/ 我最终选择 Zookeeper3.7.1 Hadoop3.3.5 Spark-3.2.4 Flink-1.16.1 Kafka2.12-3.4.0 HBase2.4.17 Hive3.1.3 JDK1.8.0_391 一、服务器 IP规划 IPhos…

tiktok_浅谈hook ios之发包x-ss-stub

frida-trace ios手机一部&#xff0c;需要越狱的电脑一台idacrackerXI 目标app&#xff1a; ipa 包&#xff0c;点击前往 密码&#xff1a;8urs 协议分析起始从抓包开始&#xff0c;个人习惯 一般安卓逆向可以直接搜关键词&#xff0c;但是ios 都在 Mach-O binary (reverse…

基于ssm学生社团管理系统+vue论文

摘 要 如今的时代&#xff0c;是有史以来最好的时代&#xff0c;随着计算机的发展到现在的移动终端的发展&#xff0c;国内目前信息技术已经在世界上遥遥领先&#xff0c;让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…

编程江湖:Python探秘之旅-----控制流程的艺术(二)

公司新承接了一个项目&#xff0c;需要处理复杂的数据决策。团队聚集在会议室&#xff0c;讨论如何用 Python 实现这一功能。 龙&#xff1a;&#xff08;看着屏幕上的项目需求&#xff09;这个项目需要我们做很多判断。好在 Python 的控制流程可以轻松搞定。 码娜&#xff1…

DAPP和APP的区别在哪?

随着科技的飞速发展&#xff0c;我们每天都在与各种应用程序打交道。然而&#xff0c;你是否真正了解DAPP和APP之间的区别呢&#xff1f;本文将为你揭示这两者的核心差异&#xff0c;让你在自媒体平台上脱颖而出。 一、定义与起源 APP&#xff0c;即应用程序&#xff0c;通常指…

一文读懂JVS逻辑引擎如何调用规则引擎:含详细步骤与场景示例

在当今的数字化时代&#xff0c;业务逻辑和规则的复杂性不断增加&#xff0c;这使得逻辑引擎和规则引擎在处理业务需求时显得尤为重要。逻辑引擎和规则引擎通过定义、解析和管理业务逻辑和规则&#xff0c;能够帮助企业提高工作效率、降低运营成本&#xff0c;并增强决策的科学…

数据科学低代码工具思考2—现状分析

数据科学工具伴随着计算机技术的发展也在持续的演进。数据库、大数据以及人工智能等时代标志性技术的出现&#xff0c;对数据科学工具的能力也有了更高的要求。一般而言&#xff0c;工具发展的趋势都是首先会出现一个能够支持数据科学计算的开发框架&#xff0c;方便用户能够更…

RHCE9学习指南 第20章 计划任务

有时需要在某个指定的时间执行一个操作&#xff0c;此时就要使用计划任务了。计划任务有两种&#xff1a;一个是at计划任务&#xff0c;另一个是crontab计划任务。 下面我们分别来看这两种计划任务的使用。 20.1 at at计划任务是一次性的&#xff0c;到了指定的时间点时就开始…

44 C++ 进程线程的基本概念-并发,进程,线程,可执行程序的基本概念

一 并发&#xff0c;进程&#xff0c;线程的基本概念和综述 1 并发 两个或者更多的任务&#xff08;独立的活动&#xff09;同时发生&#xff0c;以提高性能 一个程序同时执行多个独立的任务。 在单核CPU的计算机上&#xff0c;某一个时刻只能执行一个任务&#xff0c;那么…

mac图片格式转换软件有哪些?推荐6个实用软件

mac图片格式转换软件有哪些&#xff1f;在数字时代&#xff0c;图片格式的转换已成为我们日常工作中不可或缺的一部分。对于Mac用户来说&#xff0c;选择一款高效、便捷的图片格式转换软件尤为重要。本文将为你介绍几款备受推崇的Mac图片格式转换软件&#xff0c;让你轻松应对各…

MySQL 5.7.35下载安装使用_忘记密码_远程授权

文章目录 MySQL 5.7.35下载安装使用_忘记密码_远程授权MySQL下载地址mysql安装点击安装&#xff0c;最好以管理员身份运行选择自定义安装选择64位勾选启动自定义产品执行点击同意点击下一步点击执行下一步配置数据库端口号设置登录密码&#xff0c;如果密码忘记&#xff0c;下面…

最新PyCharm安装详细教程及pycharm配置_pycharm安装教程

目录 一、PyCharm简介及其下载网站 二、单击网站的Downloads&#xff0c;进入二级页面&#xff0c;选择对应的操作系统下载PyCharm 三、PyCharm的安装程序的安装及其配置(configuration) 1、运行PyCharm Setup 2、安装位置设置 3、安装选项设置 4、开始菜单中PyCharm快捷方式的…

CMake入门教程【高级篇】管理MSVC编译器警告

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1.什么是MSVC?2.常用的屏蔽警告3.MSVC所有警告4.target_compile_options用法5.如何在CMake中消除MSVC的警告?6.屏蔽警告编写技巧

Grafana Loki 日志传输工具

有各种不同的工具支持传输日志到Loki&#xff0c;有Grafana开发和第三方开发的工具。 Grafana 开发的工具&#xff1a; Grafana Agent Grafna 技术栈推荐客户端&#xff0c;支持收集度量、日志、跟踪和持续性能分析的遥测数据&#xff0c;跟Prometheus、OpenTelemetry、Graf…

Golang 四数相加 leetcode454 map哈希表

四数相加 leetcode454 本题如果直接进行四次for循环&#xff0c;则时间复杂度为O(N^4),超出运行时间限制。 因此我们这里使用两个分别的for循环进行遍历&#xff0c;则时间复杂度为O(N2N2). / 使用两遍for循环 func fourSumCount(nums1 []int, nums2 []int, nums3 []int, num…

MySQL自动备份脚本

MySQL自动备份脚本 mysqldump命令将数据库中的数据备份成一个文本文件&#xff0c;表的结构和数据将存储在生成的文本文件中 基本语法 备份一个数据库下的多个表 # 备份一个数据库下的多个表# username表示用户名# pwd表示密码# localhost为数据库地址# dbname表示数据库名称# …

如何使用css隐藏掉滚动条

1.解决方案 在滚动元素上再包裹一个父元素&#xff0c;然后&#xff0c;该元素添加如下代码&#xff1a; &#xff08;注&#xff1a;PC端浏览器滚动条为8px&#xff09;使元素偏移原来位置8px&#xff0c;目的就是将滚动条区域移动到父元素边框外面&#xff0c;然后&#xff…

PFA试剂瓶——实验室存储运输化学试剂样品容器

PFA是一种高性能的塑料材料。它是一种热塑性塑料&#xff0c;由全氟化&#xff0c;聚合物制成&#xff0c;具有高度的化学稳定性性。由于其优异的性能&#xff0c;PFA被广泛应用于多个领域&#xff0c;尤其是作为存储和运输各种化学试剂的容器&#xff0c;耐受-200℃至260C的温…