Ich habe so gut wie gar keine Ahnung von Python und habe leider nicht genug Zeit um mich so eingehend damit zu beschäftigen dass ich diese vermutlich recht leichte Frage selbst beantworten zu können. Tut mir leid, wenn sich deswegen irgendwer hier im Forum von einem "Nichts-Könner" belästigt fühlt!
Also:
Kann man eine geparste php-Datei in einem python-Script "benutzen"? Im konkreten Fall geht es darum eine Konfigurations-Datei der CapiSuite (ein Fax/Anrufbeantworter-Programm für Linux in python geschrieben) mit php vor/während dem Einbinden gestalten zu können. Die Idee:
Anruf kommt -> CapiSuite reagiert und lädt die Datei answering_machine.conf (in der steht, was mit dem Anruf geschehen soll) -> jetzt soll aber answering_machine.php geladen werden in der Anweisungen stehen wie zum -Zeitpunkt- des Anrufs die Konfiguration aussehen soll.
Laufen soll das ganze auf einem ubuntu 7.10-System, python und php installiert.
Ich hoffe die Frage ist verständlich gestellt und irgendwer kann mir da weiterhelfen.
geparste php-datei in (capisuite) python-script benutzen?
Also zumindest mir ist nicht so ganz klar wie die Problemstellung aussieht. Was verstehst Du unter einer "geparsten PHP-Datei"? Kannst Du Beispiele geben?
Also, in einer "Programm-Datei" der CapiSuite wird eine Konfigurations-Datei geladen: configfile_voice="/etc/capisuite/answering_machine.conf". Jetzt hätte ich aber gern, dass statt dessen an dieser Stelle die Datei answering_machine.php geladen wird. In *.conf-Datei steht z.B.
Einfach nur einbinden ala configfile_voice="/etc/capisuite/answering_machine.php" funktioniert nicht. Das habe ich schon ausprobiert. Die Datei selbst lässt sich über die Konsole ausführen, also das parsen selbst klappt an sich (mittles "$ php answering_machine.php"). Ich muss halt nur dem python-Script sagen, dass es die Datei auch ausführen soll, nicht nur als "Plain-Text" einfügen.
was dem Programm sagt, dass es 20 Sekunden warten soll bevor der Anrufbeantworter gestartet wird. Jetzt hätte ich gern, dass ich an dieser Stelledelay="20"
schreiben kann.<?php
if(Anrufzeitpunkt im Zeitinterval-A)
{ delay="5" }
else
{ delay="30" }
?>
Einfach nur einbinden ala configfile_voice="/etc/capisuite/answering_machine.php" funktioniert nicht. Das habe ich schon ausprobiert. Die Datei selbst lässt sich über die Konsole ausführen, also das parsen selbst klappt an sich (mittles "$ php answering_machine.php"). Ich muss halt nur dem python-Script sagen, dass es die Datei auch ausführen soll, nicht nur als "Plain-Text" einfügen.
Ok, vielen Dank dafür erstmal!
Ich hab hier mal im Forum ein wenig geschaut, aber um ehrlich zu sein sagen mir Snippets wienicht viel. Wie müsste so eine Pipe denn aussehen, wenn ich die Ausgabe (echo) von ./konfiguration.php in die Variable "configfile_voice" laden möchte (was ja configfile_voice="./Konfiguration.conf" entsprechen müsste)?[/quote][/code]
Ich hab hier mal im Forum ein wenig geschaut, aber um ehrlich zu sein sagen mir Snippets wie
Code: Alles auswählen
import subprocess
pipe = subprocess.Popen('C:\php.exe C:\test.php', shell=True, stdout=subprocess.PIPE).stdout
print pipe.read()
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich weiß nicht genau wo da dein Problem ist
(ungetestet, müsst aber so gehen vorrausgesetzt die Datei ist ausführbar).
Code: Alles auswählen
import subprocess
pipe = subprocess.Popen(['konfiguration.php'], shell=False, stdout=subprocess.PIPE).stdout
configfile_voice = pipe.read()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Nein, das funktioniert leider auch nicht. Aber hey, ich weiß wenigstens schon mal warum
Durch diese Anweisung wird ja die Ausgabe (echo) des konfiguration.php-Scripts in die Variable configfile_voice geschrieben, nicht nur der Pfad und Dateiname. Weiter unten im Python-Script wird dann erst der Dateiinhalt ausgelesen und ausgewertet:
Wie kann ich in dieser Funktion das Auslesen der config_voice umgehen und pipe.read() an der richtige Stelle hinzufügen?
Durch diese Anweisung wird ja die Ausgabe (echo) des konfiguration.php-Scripts in die Variable configfile_voice geschrieben, nicht nur der Pfad und Dateiname. Weiter unten im Python-Script wird dann erst der Dateiinhalt ausgelesen und ausgewertet:
Code: Alles auswählen
def readConfig(file=""):
import ConfigParser
config=ConfigParser.ConfigParser()
if (file==""):
config.readfp(open(configfile_fax))
config.readfp(open(configfile_voice))
else:
config.readfp(open(file))
for s in config.sections():
for o in config.options(s):
value=config.get(s,o)
if (len(value)>1 and value[0]=='"'):
config.set(s,o,value[1:-1])
if (not config.has_section('GLOBAL')):
raise IOError("invalid config file, section GLOBAL missing")
return config