这可能是非常基本的东西,但我找不到一个好的解决方案。 我需要编写一个python脚本,可以接受来自这样的管道的输入:
$ some-linux-command | my_script.py
类似的东西:
cat email.txt | script.py
或者它将直接从sendmail通过我的.forward文件传输。这意味着输入文件可能是一个相对较大的东西,如果它有一个附件,它可能是一个电子邮件,以后我将不得不在数据库中放入发件人,主题等,但我已经编写了数据库脚本在python中,这部分就可以了。 主要问题是如何捕获从管道流入的数据。
答案 0 :(得分:24)
使用sys.stdin读取输入。示例:
s.py的示例内容:
import sys
data = sys.stdin.readlines()
print data
- 跑步:
user@xxxxxxx:~$ cat t.txt
alpha
beta
gamma
user@xxxxxxx:~$ cat t.txt | python ./s.py
['alpha\n', 'beta\n', 'gamma\n']
你也可以使用这个Shebang将python脚本作为shell脚本:
#!/usr/bin/env python
并将权限更改为“a + x”
user@xxxxxxx:~$ cat t.txt | ./s.py
['alpha\n', 'beta\n', 'gamma\n']
答案 1 :(得分:3)
从sys.stdin读取,这是一个类似于对象的文件