python-- sys 模块

1. 简介

sys 模块是 Python 中的一个内置模块,它提供了对 Python 运行时环境的访问,包括 Python 解释器本身的变量和函数。这使得我们可以在 Python 程序中进行系统编程,例如读写文件、进程管理、环境变量等等。

2. 常用函数

2.1 sys.argv

sys.argv 是一个列表,其中包含程序启动时传递给 Python 解释器的所有命令行参数。第一个参数通常是程序本身的名称。例如:

import sys

print(sys.argv)

运行以上代码,输出结果为:

['test.py']

假设你已经将该文件保存为 test.py 并在命令行中运行,那么输出结果中只有一个元素:test.py,这是因为我们并没有传递其他参数。如果我们给它传递一些参数,在命令行中输入:

$ python test.py hello world

那么,sys.argv 就会包含这些参数:

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

2.2 sys.path

sys.path 是一个 Python 搜索模块的路径列表。当你导入一个模块时,Python 解释器会搜索 sys.path 中的所有目录以寻找该模块。你可以使用 sys.path.append() 函数添加模块搜索路径:

import sys

sys.path.append('/path/to/your/module')

2.3 sys.exit()

sys.exit() 函数用于中止 Python 解释器。如果在主程序中使用它,它将终止整个程序。如果在子程序中使用它,则仅终止该子程序。

import sys

sys.exit()

2.4 sys.platform

sys.platform 属性包含一个标识符,表示 Python 解释器当前运行的平台,例如 'win32', 'linux' 等等。

import sys

print(sys.platform)

输出结果为:

win32

2.5 sys.version

sys.version 属性包含 Python 解释器在运行时的版本信息。这包括主要版本号、次要版本号和 patch 级别。

import sys

print(sys.version)

输出结果如下:

3.9.5 (default, May  4 2021, 03:36:27) 

[GCC 8.4.0]

2.6 sys.stdin, sys.stdout, sys.stderr

sys.stdin、sys.stdout、sys.stderr 分别代表 Python 的标准输入、标准输出和标准错误流。默认情况下,它们分别代表控制台的输入、输出和错误流。

3. 实例演示

3.1 读取输入

在 Python 中,我们可以使用 sys.stdin 从控制台读取输入。以下是一个简单的示例程序:

import sys

for line in sys.stdin:

print(line.strip().upper())

上面的代码将读入来自标准输入的每一行文本,将其转换为大写字母并打印回标准输出。

3.2 处理数据流

在一个 Python 程序中,可以将 sys.stdin 和 sys.stdout 组合使用来处理数据流。例如,以下程序从标准输入读取一些文本,对其执行简单的操作并将结果写回到标准输出:

import sys

for line in sys.stdin:

line = line.strip()

if line:

sys.stdout.write(line[::-1] + '\n')

上面的代码将读入每一行输入,将其翻转后写回标准输出。

3.3 对错误输出重定向

Python 中的 sys.stderr 属性用于显示错误消息。我们可以通过以下程序将其输出重定向到文件中:

import sys

sys.stderr = open('logfile.txt', 'w')

try:

print(1/0)

except Exception as e:

print(e, file=sys.stderr)

上面的代码将在日志文件中记录错误信息,而不是在控制台中显示。

3.4 获取命令行参数

通过 sys.argv 可以获取命令行参数。以下是一个示例程序:

import sys

if len(sys.argv) > 1:

filename = sys.argv[1]

with open(filename) as f:

print(f.read())

else:

print("usage: python myscript.py filename")

上面的代码将读取文件名作为命令行参数,并在控制台中打印文件内容。如果未提供参数,则输出一条用法提示。

4. 总结

在 Python 中,sys 模块提供了许多有用的函数和属性,允许我们对程序、解释器和运行时环境进行访问和操作。我们可以使用 sys.argv 获取命令行参数,sys.path 添加模块搜索路径,sys.exit() 终止程序,sys.stdin、sys.stdout、sys.stderr 处理数据流,sys.platform 获取运行平台以及 sys.version 获取 Python 版本信息。

后端开发标签