Code: Alles auswählen
sys.exit("rückgabewert")
die einzige möglichkeit? Und so Richtig?
Denn es scheint so nicht zu Funktionieren.
mfg
Smokie
Code: Alles auswählen
sys.exit("rückgabewert")
Code: Alles auswählen
sys.exit(aNumber)
Wie soll das gehen? Ein Rückgabewert wird zurückgegeben wenn das Programm sich beendet, so ist dieser Wert definiert. Die Einzige ausnahme, sind Deamons, die beim Starten sich Forken und ein Fork sind beendet und der andere weiterläuft, der Beendende Fork gibt dabei den Rückgabewert aus.Smokie_joe hat geschrieben:Allerdings hätte ich noch die frage ob es möglich ist
irgendwo im skritp Rückgabewerte zu liefern (ohne zu Beenden)?
Stimmt, mit ``subprocess`` und ein par "hacks" kann man dann den Output "Synchron" (Also ohne erst darauf zu warten dass das Programm beendet ist. Sondern während der Laufzeit den bisherigen puffer zu ``flush``en) auffangen. Aber wie realisiert man das wirklich? Versuche dahingehend habe bei mir nicht funktioniert (€: Der puffer wird immer erst ausgegeben wenn das Programm terminiert wurde.). Es soll aber irgendwie gehen.jens hat geschrieben: Warum gibst du die Daten nicht einfach mit print bzw. sys.stdout aus?
Hi!sape hat geschrieben:Hast du den Link oder ein passendes Suchwort?jens hat geschrieben:Sowas hat Gerold hier mal gezeigt...
Z.B. INI:gerold hat geschrieben:Wenn andere Programmiersprachen mitspielen, sollte man ein anderes Datenaustauschformat verwenden.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import os
import sys
from ConfigParser import ConfigParser
from StringIO import StringIO
def main():
while True:
stdin_string = sys.stdin.read()
if not stdin_string:
break
inistream = StringIO(stdin_string)
ini = ConfigParser()
ini.readfp(inistream, "inistream")
print
print "Ausgabe des Servers:"
print "********************"
for key, value in ini.items("values"):
print key, value
print "********************"
if __name__ == "__main__":
main()
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import os
import sys
import time
import subprocess
from ConfigParser import ConfigParser
from StringIO import StringIO
EOF = "\x1a" # End of File
def generate_ini_string(valuedict):
"""INI-String erstellen"""
ini = ConfigParser()
ini.add_section("values")
for key, value in valuedict.items():
ini.set("values", str(key), value)
stream = StringIO()
ini.write(stream)
return stream.getvalue()
# Serverprozess starten
proc = subprocess.Popen(
(sys.executable, "server.py"),
stdin = subprocess.PIPE,
cwd = os.curdir
)
for i in range(2):
# INI-String zum Server schicken
valuedict = {"value1": i + 1, "value2": i + 2}
proc.stdin.write(generate_ini_string(valuedict) + "\x1a")
# warten
time.sleep(3)
# Prozess schließen
proc.stdin.close()