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

发布于 2024-12-20 14:38:39 字数 354 浏览 0 评论 0原文

这可能是非常基本的东西,但我找不到一个好的解决方案。 我需要编写一个 python 脚本,它可以接受来自管道的输入,如下所示:

$ some-linux-command | my_script.py

类似这样的:

cat email.txt | script.py

或者它将直接由我的 .forward 文件从 sendmail 进行管道传输。这意味着输入文件如果有附件的话可能会比较大,并且可能是一封电子邮件,稍后我必须将发件人、主题等放入数据库中,但我已经编写了数据库脚本在 python 中,所以这部分就可以了。 主要问题是如何捕获从管道流入的数据。

This is probably something really basic, but I can not find a good solution for it.
I need to write a python script that can accept input from a pipe like this:

$ some-linux-command | my_script.py

something like this:

cat email.txt | script.py

Or it will just be piped by my .forward file directly from sendmail. This means that the input file might be something relatively large if it has an attachment, and it will probably be an e-mail, later I will have to put in a database the sender, the subject and such, but I have written database scripts in python, so that part will be OK.
The main problem is how to capture the data flowing in from the pipe.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情魔剑神 2024-12-27 14:38:39

使用 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']

Use sys.stdin to read the input . Example :

Example content of s.py :

import sys
data = sys.stdin.readlines()
print data

-- Running :

    user@xxxxxxx:~$ cat t.txt
    alpha
    beta
    gamma

    user@xxxxxxx:~$ cat t.txt | python ./s.py
    ['alpha\n', 'beta\n', 'gamma\n']

You can also make the python script as shell script using this Shebang :

#!/usr/bin/env python

and changing permission to 'a+x'

 user@xxxxxxx:~$ cat t.txt |  ./s.py
 ['alpha\n', 'beta\n', 'gamma\n']
怼怹恏 2024-12-27 14:38:39

从 sys.stdin 读取,这是一个类似文件的对象

read from sys.stdin, which is a file like object

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文