Gewusst wie: aufrufen eines Perl-Skript aus der Python -, Rohrleitungs-input?
Ich bin hacking einige Unterstützung für die DomainKeys und DKIM in eine open-source E-Mail-marketing-Programm, das verwendet ein python-script zum senden der eigentlichen E-Mails via SMTP. Ich beschloss zu gehen, die schnellen und schmutzigen Weg, und schreibt einfach ein perl-Skript nimmt eine E-Mail-Nachricht von der Standardeingabe (STDIN Zeichen, dann gibt es unterzeichnet.
Was ich tun möchte, ist aus dem python-Skript, leiten Sie die E-Mail-text in einer Zeichenfolge, um das perl-Skript, und speichern Sie das Ergebnis in einer anderen variable, so kann ich senden Sie die E-Mail signiert. Ich bin nicht gerade ein python-guru, aber, und ich kann nicht scheinen zu finden ein guter Weg, dies zu tun. Ich bin mir ziemlich sicher, dass ich so etwas wie os.system
für diese, aber die Rohrleitungen einer Variablen an das perl-Skript ist etwas, das scheint, entzieht sich mir.
Kurz: Wie kann ich die Leitung einer Variablen von einem python-Skript, ein perl-Skript, und speichern Sie das Ergebnis in Python?
EDIT: ich vergaß zu zählen, dass das system mit dem ich arbeite hat nur python v2.3
InformationsquelleAutor Alex Fort | 2009-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
os.popen() zurück, der ein Tupel mit den stdin und stdout von den Teilprozess.
-1: veraltet. Verwenden Sie den subprocess-Modul.
Aus der Frage: "hat nur python v2.3 " deprecated noch nicht passiert.
Dies funktionierte ziemlich gut. Ich landete mit popen2, das öffnen von Eingang und Ausgang, die arbeitete wie ein Charme. Vielen Dank für die Hilfe.
InformationsquelleAutor millimoose
Verwenden Teilprozess. Hier ist das Python-Skript:
Und hier ist das Perl-Skript:
InformationsquelleAutor Chas. Owens
InformationsquelleAutor ngn
"Ich bin mir ziemlich sicher, dass ich so etwas wie os.system, sondern auch die Rohrleitungen einer Variablen an das perl-Skript ist etwas, das scheint, entzieht sich mir."
Richtig. Die Teilprozess - Modul ist wie das os.system, bietet aber die Verrohrung Funktionen, die Sie suchen.
Festung: nehmen Sie Einfach das subprocess-Modul von 2,4 und führen Sie es auf 2.3. Es scheint zu funktionieren.
InformationsquelleAutor S.Lott
Ich bin sicher, es gibt einen Grund, Sie gehen hinunter die Strecke, die Sie gewählt haben, aber warum nicht einfach tun, die Unterzeichnung in Python?
Wie Sie sind Unterschreiben? Vielleicht wir könnten einige Hilfe schriftlich eine python-Implementierung?
Wenn Sie die Perl-Lösung irgendwo würde ich gerne zu helfen versuchen, und konvertieren Sie es 🙂
Die Perl-Lösung ist wirklich einfach. Ich bin gerade dabei den Vorteil das Mail::DKIM-Modul, wodurch der Unterzeichnung einer E-Mail-ziemlich trivial.
So etwas wie dies sollte eine Python-Implementierung ähnlich trivial: hewgill.com/pydkim 🙂
...ah, außer es erfordert Python >= 2.5 ...Ratten! Aus Neugier, warum sind Sie immer noch mit 2.3 nicht eine neuere build?
InformationsquelleAutor Jon Cage
Versuchte ich auch zu tun, dass nur konfigurieren, wie es funktioniert, wie
Diesen möchte ich unterstützen u zu machen, damit es funktioniert.
InformationsquelleAutor Fatih Karatana