接上文Python开发从零开始-40.4-编程环境交互,本文小编与大家分享 Python 编程环境交互的相关知识。
2、重定向标准输入输出流
Python 的标准输入输出流默认输入和输出设备分别为:
标准输入流 (sys.stdin):接受键盘输入;
标准输出流 ((sys.stdout):输出屏幕显示;
标准错误流 ((sys.stderr):输出屏幕显示。
可以通过输入输出流对象重定向输入和输出源,通常用于日志记录或测试模拟。例如:
标准输入流重定向为从文件或其他来源读取数据;
标准输出或标准错误流输出重定向到文件、自定义对象或网络上的其他计算机。
(1)标准输入流重定向
1)使用操作系统级重定向(命令行方式)
在命令行中使用操作系统的重定向符号 " < ",这是 Python 最常见的标准输入流重定向方式。其步骤为:
① 编写 Python 脚本(如 script.py)
a = int(input())b = int(input())print(a + b)
② 新建输入文本文件(如 data.txt)
1020
③ 使用命令行(使用命令提示符 cmd ,不能使用 PowerShell),并输入以下命令
python script.py < data.txt命令提示符显示:

2)sys.stdin 重定向
sys.stdin 是一个类文件对象,支持 read()、readline() 等方法。这意味着只要提供一个兼容文件接口的对象,就可以替代默认的标准输入。
sys.stdin 重定向示例如下:

以上示例是将 sys.stdin 重定向为从文件(data.txt)读取,然后再使用 sys.__stdin__ 属性恢复默认输入源。
sys.__stdin__ 属性是 sys 模块中保存的标准输入流(stdin)初始对象(只读)。其主要作用是:
|
1)使用操作系统级重定向(命令行方式)
在命令行中使用操作系统的重定向符号 " > ",对标准输出流进行重定向。其步骤为:
① 编写 Python 脚本(如 script_out.py)
print("这是重定向到文件的测试文本")② 使用命令行(命令提示符 cmd 、PowerShell 均可,但不可混用),并输入以下命令。
python script_out.py > data_out.txt命令运行后,会生成 data_out.txt 文件,打印输出到该文件中。

2)sys.stdout 重定向
sys.stdout 也是一个类文件对象,支持 write() 方法。可以将 sys.stdout 指向文件对象,这样就可以替代默认的标准输出,将输出内容写入文件。
sys.stdout 重定向示例如下:

程序使用了变量存储 sys.stdout 初始值,并在输出结束后,将标准输出流恢复为初始状态。运行后,会生成 output.txt 文件,标准输出流会输出到该文件中。

1)使用操作系统级重定向(命令行方式)
在命令行中使用操作系统的重定向符号 " 2> ",对标准错误流进行重定向。其步骤为:
① 编写 Python 脚本(如 script_err.py)
import syssys.stderr.write("这是错误测试文本\n")
② 使用命令行(命令提示符 cmd 、PowerShell 均可,但不可混用。cmd 仅显示错误信息,PowerShell 会显示调用栈信息),并输入以下命令
python script_err.py 2> data_err.txt命令运行后,会生成 data_err.txt 文件,错误信息输出到该文件中。

3)sys.stderr 重定向
sys.stderr 也是一个类文件对象,可以将 sys.stderr 指向文件对象,这样就可以替代默认的标准错误输出,将输出内容写入文件。
sys.stderr 重定向示例如下:

运行后,会生成 error_log.txt 文件,标准错误流会输出到该文件中。

Python 的标准输入输出流及其重定向内容非常丰富。例如,结合contextlib 模块中的上下文管理器可以更为便捷地进行重定向;结合 socket 模块可以将输出重定向到网络其他计算机等等。这些大家可以查阅官方文档和通过网络教程了解和使用,小编不再深入介绍。
受文章篇幅所限,下文将继续介绍 Python 编程环境交互的相关知识。