1.5.4 重定向和管道

对于许多应用程序,通过在控制台窗体键入数据作为输入流并不可行,因为这样的话,应用程序的处理能力将受限于我们所键入的数据总量(包括键入速度)。同样,在很多情况下,要求保存写入标准输出流的数据到文件,以便今后使用。为了克服上述限制,接着我们将强调如下理念,即标准输入是一种抽象:程序仅仅要求其提供输入,却不会依赖于输入流的数据源。标准输出是类似的抽象,这些抽象的能力源自于我们可通过操作系统为标准输入或标准输出指定不同的源,例如一个文件、一个网络、一个程序等。所有的现代操作系统都实现了上述功能机制。

1. 重定向标准输出到一个文件

通过在执行程序的命令后面添加重定向指令,我们可将标准输出重定向到一个文件。程序将标准输出的结果写入指定文件,以用于永久存储或以后为其他程序提供输入。例如:

指定标准输出流不是控制台窗口,而是写入名为data.txt的文本文件中。每次调用函数stdio.write()、stdio.writeln()或stdio.writef()时,将文本附加到data.txt文件的末尾。在上例中,最终运行结果是data.txt文件包括1000个随机值。控制台窗口没有任何输出显示,所有的输出直接写入符号“>”后指定的文件中。信息保存到文件中可供以后使用。注意,重定向机制完全依赖于标准输出抽象,与抽象的不同实现无关。重定向机制不要求修改程序randomseq.py(程序1.5.1)。

一旦我们花费大量精力获得了数据结果,往往希望保存结果以便今后能参考使用,使用重新定向机制可以保存所有程序的输出到文本文件。在现代操作系统中,我们也可以使用操作系统提供的复制/粘贴或者其他类似的功能保存一些信息,但复制/粘贴功能不适用于大量数据的情况。与之对比,重定向则是特别设计以适用于处理海量数据的情况。 ...

Get 程序设计导论:Python语言实践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.