Python 的 sys 模块是一个内置模块,它提供了许多与 Python 解释器和 Python 程序运行环境有关的变量和函数。在本文中,我们将详细讲解 Python3.7 中 sys 模块的具体使用及示例。
sys 模块的导入和版本信息
我们可以通过以下方式导入 sys 模块:
import sys
导入 sys 模块后,可以使用 sys.version 属性查看 Python 解释器的版本信息:
print(sys.version)
输出结果如下:
3.7.10 (default, May 3 2021, 08:00:49)
[GCC 8.4.0]
sys 模块的常用属性
sys.argv
sys.argv 是一个列表,它包含了 Python 解释器用于运行当前脚本的命令行参数。例如,当我们运行以下 Python 脚本时:
import sys
print(sys.argv)
我们使用以下命令运行该脚本:
python script.py arg1 arg2 arg3
输出结果如下:
['script.py', 'arg1', 'arg2', 'arg3']
sys.path
sys.path 是一个列表,它包含了 Python 解释器用于查找模块的路径。如果我们要使用自己编写的 Python 模块,可以将模块所在的路径添加到 sys.path 中,以便 Python 解释器能够找到它。例如:
import sys
sys.path.append('/path/to/my/module')
在上述代码中,我们将自己编写的模块所在的路径添加到 sys.path 中。
sys 模块的常用函数
sys.exit()
sys.exit() 函数可以使 Python 解释器退出,并返回一个指定的退出码。如果没有指定退出码,则默认为 0。例如:
import sys
print('start')
sys.exit(1)
print('end')
在上述代码中,由于执行了 sys.exit(1) 函数,程序会在该处退出,并返回退出码 1。因此,我们不会在控制台输出 "end"。
sys.stdin、sys.stdout 和 sys.stderr
sys.stdin、sys.stdout 和 sys.stderr 分别表示标准输入、标准输出和标准错误流。可以使用这些流对象读取和写入数据。例如:
import sys
# 从标准输入流中读取一行数据
line = sys.stdin.readline()
print('Input:', line)
# 将数据输出到标准输出流
sys.stdout.write('Output: ' + line)
# 将错误输出到标准错误流
sys.stderr.write('Error: ' + line)
在上述代码中,我们从标准输入流 sys.stdin 中读取一行数据,然后将该数据输出到标准输出流 sys.stdout 和标准错误流 sys.stderr。
示例说明
下面是两个使用 sys 模块的示例说明。
示例一:读取命令行参数
import sys
if len(sys.argv) == 1:
print('Please provide a file name.')
sys.exit(1)
filename = sys.argv[1]
with open(filename) as file:
data = file.read()
print(data)
在上述代码中,我们使用 sys.argv 判断命令行参数的数量。如果只有一个参数,程序会退出,并输出 "Please provide a file name."。如果有多个参数,程序会读取第一个参数所代表的文件,并将文件内容输出到控制台。
示例二:修改标准输出流
import sys
class Logger:
def __init__(self, filename):
self.terminal = sys.stdout
self.logfile = open(filename, 'a')
def write(self, message):
self.terminal.write(message)
self.logfile.write(message)
def flush(self):
pass
sys.stdout = Logger('output.log')
print('Hello, world!')
在上述代码中,我们创建了一个自定义类 Logger,该类用于将输出同时写入到控制台和一个日志文件中。为了实现这一功能,我们将 sys.stdout 的值修改为一个 Logger 实例。当程序执行 print('Hello, world!') 时,输出会被同时写入到控制台和 output.log 文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3.7 sys模块的具体使用 - Python技术站