源自《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