这可能是非常基本的东西,但我找不到好的解决方案。 我需要编写一个 python 脚本,它可以像这样接受来自管道的输入:
$ some-linux-command | my_script.py
像这样:
cat email.txt | script.py
或者它将直接由我的 .forward 文件从 sendmail 通过管道传输。这意味着如果有附件,输入文件可能会比较大,可能是一封电子邮件,稍后我必须将发件人、主题等放入数据库,但我已经编写了数据库脚本在 python 中,所以那部分就可以了。 主要问题是如何捕获从管道流入的数据。
最佳答案
使用 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']
关于python - 如何将 shell 命令输出重定向到 Python 脚本输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8478137/