Hiho gemeinde!
Ich bin grad dabei ein prog zu coden das die php.exe aufruft und einen Dateinamen als Argument übergibt. Soweit ist das ja kein Problem. Nun möchte ich aber das Ergebnis der php.exe in einer Variable/Liste speichern.
Jemand ne Idee?
Bin über jede schnelle Antwort dankbar
Programm ausführen und ergebnis auslesen!
HI. Schau dir mal das Modul subprocess an, bzw die Funktionen popen, popen3 und popen4 aus dem Modul popen2/os . Damit kannst du Prozesse starten, die mit einer Pipe zu deinem Programm verbunden sind. Über die Pipe kannst du dann lesen und schreiben . Hilfe findest du auch genug mit der Forensuche...
Danke für die schnelle Antwort!
Schau ich mir gleich mal an.. was anderes:
wie übergebe ich Argumente ohne - ?
Denn die php.exe will die Datei ja in folgender Form haben:
c:\php.exe c:\test.php
aber python macht ja dann:
c:\php.exe -c:\test.php
gell?
Schau ich mir gleich mal an.. was anderes:
wie übergebe ich Argumente ohne - ?
Denn die php.exe will die Datei ja in folgender Form haben:
c:\php.exe c:\test.php
aber python macht ja dann:
c:\php.exe -c:\test.php
gell?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Geht denn sowas nicht:
Code: Alles auswählen
import subprocess
pipe = subprocess.Popen('C:\php.exe C:\test.php', shell=True, stdout=subprocess.PIPE).stdout
print pipe.read()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Doch, danke
Habs gelöst..
so schaut das ganze aus:
Danke nochmal
Habs gelöst..
so schaut das ganze aus:
Code: Alles auswählen
# -*- coding: cp1252 -*-
import os, sys
datei=sys.argv[1]
inhalt=os.popen("c:\php\php.exe "+datei).readlines()
datei=datei.split('.')
file=open(datei[0]+".html", 'w')
i=0
try:
while inhalt[i] !='':
inhalt[i] = inhalt[i].replace('\n', '<br> ')
file.write(inhalt[i])
i=i+1
except: pass
file.close()
os.startfile(datei[0]+".html")
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Jetzt muss ich unbedingt Dookie-like Optimierungen anbringen :
Edit: Werden durch subprocess eigentlich die anderen Methoden deprecated?
Edit: Ich habe im Code file gegen parsed getauscht, damit das file() nicht überschrieben wird, das ich dann gleich mal statt open() benutzt habe.
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
import os, sys
try:
datei = sys.argv[1]
except IndexError:
print 'Dateiname fehlt'
sys.exit()
inhalt = os.popen("c:\php\php.exe " + datei)
datei = datei.split('.')
parsed = file(datei[0] + ".html", 'w')
for line in inhalt.readlines():
line = line.replace('\n', '<br> ')
parsed.write(line)
parsed.close()
inhalt.close()
os.startfile(datei[0] + ".html")
Edit: Ich habe im Code file gegen parsed getauscht, damit das file() nicht überschrieben wird, das ich dann gleich mal statt open() benutzt habe.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Code: Alles auswählen
parsed.writelines(line.replace('\n', '<br> ') for line in inhalt)
parsed.close()
inhalt.close()
Soweit ich gesehen habe: nein. Kann aber gut sein, da subprocess einfacher zu handhaben istLeonidas hat geschrieben:Edit: Werden durch subprocess eigentlich die anderen Methoden deprecated?
Edit: Ich habe im Code file gegen parsed getauscht, damit das file() nicht überschrieben wird, das ich dann gleich mal statt open() benutzt habe.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ahh! Sehr schön, eine Generator Expression! Werde ich irgendwann auch noch dokumentieren, oder möchtest du es machen, Milan? Das wäre sicher sehr hilfreich, vor allem für so Leute wie mich.Milan hat geschrieben:Gefällt mir besserCode: Alles auswählen
parsed.writelines(line.replace('\n', '<br> ') for line in inhalt) parsed.close() inhalt.close()
Aja. Aber so besonders sinnvoll finde ich diese Neuerung nicht, das war ja alles schon vorher drin, jetzt ist es halt doppelt.Milan hat geschrieben:Soweit ich gesehen habe: nein. Kann aber gut sein, da subprocess einfacher zu handhaben istLeonidas hat geschrieben:Edit: Werden durch subprocess eigentlich die anderen Methoden deprecated?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi. Naja, so gut dokumentieren kann ich nicht. Im grunde ists ja nichts anderes als eine Listcomprehension, bei der keine Liste erzeugt wird. Vielleicht reicht das als Erklärung schon . Aber einen Unterschied gibt es noch: ein Iterator kann nur genau einmal durchlaufen werden und nur Element für Element, also kann nichts so einfach übersprungen werden wie bei einer liste mit Liste=Liste[::2] .
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Kann bei einer LC etwas übersprungen werden? Doch, schon, nicht war, es ist ja eine normale Liste?
Gut Milan, das ist doch immerhin schon etwas, und macht das Prinzip schon mal klarer.
Gut Milan, das ist doch immerhin schon etwas, und macht das Prinzip schon mal klarer.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice