python - 如何将 shell 命令输出重定向到 Python 脚本输入?

标签 python shell input pipe

这可能是非常基本的东西,但我找不到好的解决方案。 我需要编写一个 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/

相关文章:

c - 在使用 dup2() 重定向标准输入后调用 execve() 时发生了什么?

linux - Shell脚本编程: "bad number" error

input - 从 FORTRAN90 中的 TXT 文件读取复数数组和向量

javascript - 为什么我应该使用 goog.ui.Checkbox 而不是常规输入?

python - 更改 Ray RLlib Training 的 Logdir 而不是 ~/ray_results

python - 无法在 python 3.5(pip、ubuntu 3.5)上安装 'secrets'

python - 如何将多个 XLSX 文件合并到一个工作簿中,同时保持其工作表独立?

java - 将参数从 Java 程序传递到 shell 脚本

angular - 如何在 Angular 中重置更改事件

python - 如何检测十进制列是否应转换为整数或 double ?