Python 的三个“输出流”
·
想象运行一个Python程序,就像在和一个“机器人”对话。那么python的三个标准“流”对象(标准输入 / 输出 / 错误流(stdin / stdout / stderr))可以做以下类比:
| 名称 | 作用 | 类比 |
|---|---|---|
sys.stdin |
你对机器人说话的“麦克风” | 输入 |
sys.stdout |
机器人正常说话的“扬声器” | 输出 |
sys.stderr |
机器人“报警”的扩音器 |
错误信息或警告输出 |
1. sys.stdin(标准输入流)- 是程序从外部接收数据的通道。
-
默认:来自键盘。
-
典型场景:使用
input()时。输入的内容就是从 sys.stdin 流入程序的。
name = input("请输入你的名字:") # 实际上就是从 sys.stdin 读取内容
print(f"你好,{name}!")
2. sys.stdout(标准输出流)- 是程序输出普通信息的通道。
-
默认:输出到控制台(终端);
-
常见:
print()使用的就是sys.stdout。print()= 调用sys.stdout.write()。输出内容会显示在控制台。
3. sys.stderr(标准错误流)- 是程序输出错误或警告信息的通道。
-
默认:输出到控制台;
-
与
sys.stdout不同的是,它专门负责输出错误或状态信息;常常被用来区分“正常输出”和“错误输出”。这样的话可以区分开错误信息,保证可以显示在终端。
python my_script.py > output.txt
#重定向的时候,普通信息输入到了txt文件中,错误输出(stderr)仍然显示在终端
tqdm默认把进度条信息输出到sys.stderr(标准错误流):from tqdm import tqdm import time for i in tqdm(range(5)): #默认是stderr,如果需要和普通输出在同一个流,可以用file参数改为sys.stdout time.sleep(0.5)如果把程序输出重定向到文件(
> output.txt),进度条依然会在屏幕上显示(不会被写入文件)。
更多推荐


所有评论(0)