# fileinput
# 概述
python内置的fileinput模块可以处理linux命令行的管道、重定向、参数传递等行为。
例如:
#!/usr/bin/env python3
import fileinput
with fileinput.input() as f_input:
for line in f_input:
print(line, end='')
则下面三种方式都是可行的:
$ ls | ./filein.py # Prints a directory listing to stdout.
$ ./filein.py /etc/passwd # Reads /etc/passwd to stdout.
$ ./filein.py < /etc/passwd # Reads /etc/passwd to stdout.
# 上下文管理器
实质上fileinput.input()将创建并返回一个FileInput类的实例,我们可以尝试传入参数,并且其本身支持上下文管理。
>>> import fileinput
>>> with fileinput.input('/home/lei/scripts/docker_installer.sh') as f:
... for line in f:
... print(f.filename(),f.lineno(),line,end='')
...
/home/lei/scripts/docker_installer.sh 1 curl -fsSL https://get.docker.com -o get-docker.sh
/home/lei/scripts/docker_installer.sh 2 sudo sh get-docker.sh
/home/lei/scripts/docker_installer.sh 3 sudo usermod -aG docker $USER