通过重定向,管道来作为python脚本的输入

前言

想把python替代shell脚本,避免不了的问题是,在命令行中结合python脚本使用重定向,管道作为输入.

方案

python内置fileinput模块可以解决这个问题,如下脚本:

1
2
3
4
5
6
#!/usr/bin/env python3
import fileinput

with fileinput.input() as f_input:
for line in f_input:
print(line, end='')

运行结果如下:

1
2
3
4
5
zp@zpeng:~/PycharmProjects/script$ ls ~ | python3 filein.py 
app Desktop Documents Downloads hexo_zp_next mnt Music node_modules npm-debug.log Pictures Public PycharmProjects software Templates tmp Videos vmware 流量牵引.docx
zp@zpeng:~/PycharmProjects/script$ python3 filein.py < filein.py
#!/usr/bin/env python3 import fileinput with fileinput.input() as f_input: for line in f_input: print(line.strip(), end=' ') print()
zp@zpeng:~/PycharmProjects/script$

可见这样可以将python脚本当做shell脚本来用.