Python中sys.stdin和fileinput读取标准输入

源自《Python Linux系统管理与自动化运维》第3章打造命令行工具。

1. 使用sys.stdin和fileinput读取标准输入

众所周知,Shell脚本具有一个其他脚本语言都没有的优点,那就是管道。管道可以衔接不同的Linux命令,通过管道,我们可以使用多个简单的命令来实现一个复杂的功能。管道如此强大,因此,我们希望在Python语言中使用管道来结合Python语言和Shell脚本的优势。

在Python标准库的sys库中,有三个文件描述符,分别是stdin、stdout和stderr,这三个文件描述符分别代表标准输入、标准输出和错误输出。我们不需要调用open函数打开这几个文件就可以直接使用。例如,我们有一个名为read_stdin.py的文件,该文件仅仅是从标准输入中读取内容,然后打印到命令行终端。文件内容如下:

from __future__ import print_function  
import sys  
 
for line in sys.stdin:  
    print(line, end="") 

接下来,我们就可以像Shell脚本一样,通过标准输入给该程序输入内容。如下所示:

cat /etc/passwd | python read_stdin.py  
python read_stdin.py < /etc/passwd  
python read_stdin.py - 

sys.stdin是一个普通文件对象,除了从标准输入读取内容以外,并没有特殊之处。我们也可以使用sys.stdin调用文件对象的方法。如调用read函数读取标准输入中的所有内容,调用readlines函数将标准输入的内容读取到一个列表中。如下所示:

from __future__ import print_function  
import sys  
 
def get_content():  
    return sys.stdin.rea

你可能感兴趣的:(Python,Python,sys.stdin,fileinput)