如何从 Python 调用 Perl 脚本,通过管道输入?
我将对 DomainKeys 和 DKIM 的一些支持融入到一个开源电子邮件营销程序中,该程序使用 python 脚本通过 SMTP 发送实际的电子邮件。 我决定走快速而肮脏的路线,只编写一个 Perl 脚本,该脚本接受来自 STDIN 的电子邮件,对其进行签名,然后将其返回签名。
我想要做的是,从 python 脚本,将字符串中的电子邮件文本通过管道传输到 perl 脚本,并将结果存储在另一个变量中,这样我就可以发送签名的电子邮件。 然而,我并不是一个Python专家,而且我似乎找不到一个好的方法来做到这一点。 我很确定我可以使用诸如 os.system 之类的东西来实现此目的,但是将变量通过管道传输到 perl 脚本似乎让我感到困惑。
简而言之:如何将变量从 python 脚本传输到 perl 脚本,并将结果存储在 Python 中?
编辑:我忘记包括我正在使用的系统只有 python v2.3
I'm hacking some support for DomainKeys and DKIM into an open source email marketing program, which uses a python script to send the actual emails via SMTP. I decided to go the quick and dirty route, and just write a perl script that accepts an email message from STDIN, signs it, then returns it signed.
What I would like to do, is from the python script, pipe the email text that's in a string to the perl script, and store the result in another variable, so I can send the email signed. I'm not exactly a python guru, however, and I can't seem to find a good way to do this. I'm pretty sure I can use something like os.system
for this, but piping a variable to the perl script is something that seems to elude me.
In short: How can I pipe a variable from a python script, to a perl script, and store the result in Python?
EDIT: I forgot to include that the system I'm working with only has python v2.3
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
使用子进程。 这是 Python 脚本:
这是 Perl 脚本:
Use subprocess. Here is the Python script:
And here is the Perl script:
os.popen() 将返回一个带有标准输入和标准输出的元组的子流程。
os.popen() will return a tuple with the stdin and stdout of the subprocess.
“我很确定我可以使用 os.system 之类的东西来实现这一点,但将变量管道传输到 perl 脚本似乎让我感到困惑。”
正确的。 subprocess 模块类似于 os.system,但提供了您正在寻找的管道功能为了。
"I'm pretty sure I can use something like os.system for this, but piping a variable to the perl script is something that seems to elude me."
Correct. The subprocess module is like os.system, but provides the piping features you're looking for.
我确信您选择您选择的路线是有原因的,但为什么不直接用 Python 进行签名呢?
你签的怎么样? 也许我们可以在编写 python 实现方面提供一些帮助?
I'm sure there's a reason you're going down the route you've chosen, but why not just do the signing in Python?
How are you signing it? Maybe we could provide some assitance in writing a python implementation?
我也尝试这样做,仅配置如何使其工作,因为
我希望这将帮助您使其工作。
I tried also to do that only configure how to make it work as
I wish this will assist u to make it work.