6

私は、DomainKeys と DKIM のサポートをオープン ソースの電子メール マーケティング プログラムにハッキングしています。これは、Python スクリプトを使用して実際の電子メールを SMTP 経由で送信します。私は手っ取り早い方法で、STDIN から電子メール メッセージを受け取り、署名し、署名して返す perl スクリプトを作成することにしました。

私がやりたいのは、pythonスクリプトから、文字列内の電子メールテキストをperlスクリプトにパイプし、結果を別の変数に保存して、署名付きの電子メールを送信できるようにすることです。ただし、私は正確には Python の第一人者ではなく、これを行う良い方法を見つけることができないようです。このようなものを使用できると確信してos.systemいますが、変数を perl スクリプトにパイプすることは、私にはわからないようです。

要するに: Python スクリプトから Perl スクリプトに変数をパイプして、結果を Python に保存するにはどうすればよいですか?

編集:私が使用しているシステムにはpython v2.3しかないことを含めるのを忘れていました

4

6 に答える 6

11

サブプロセスを使用します。Python スクリプトは次のとおりです。

#!/usr/bin/python

import subprocess

var = "world"

pipe = subprocess.Popen(["./x.pl", var], stdout=subprocess.PIPE)

result = pipe.stdout.read()

print result

Perl スクリプトは次のとおりです。

#!/usr/bin/perl

use strict;
use warnings;

my $name = shift;

print "Hello $name!\n";
于 2009-04-28T15:25:57.557 に答える
7
from subprocess import Popen, PIPE
p = Popen(['./foo.pl'], stdin=PIPE, stdout=PIPE)
p.stdin.write(the_input)
p.stdin.close()
the_output = p.stdout.read()
于 2009-04-28T15:12:26.043 に答える
2

「これには os.system のようなものを使用できると確信していますが、変数を perl スクリプトにパイプすることは、私にはわからないようです。」

正しい。subprocessモジュールはos.system に似ていますが、探しているパイピング機能を提供します。

于 2009-04-28T15:01:48.160 に答える
2

あなたが選んだ道をたどるのには理由があると思いますが、Python でサインインしないのはなぜですか?

どのように署名していますか?たぶん、Python の実装を書くのを手伝うことができますか?

于 2009-04-28T15:18:12.303 に答える
1

私はそれをどのように機能させるかだけを設定することも試みました

pipe = subprocess.Popen(
            ['someperlfile.perl', 'param(s)'],
            stdin=subprocess.PIPE
        )
response = pipe.communicate()[0]

これが機能するのに役立つことを願っています。

于 2013-02-05T09:34:12.780 に答える