Seite 1 von 1

pythonfile mit rückgabewert ?

Verfasst: Montag 21. September 2009, 10:17
von Hubi
Hello @ all

Ich wollte fragen, ob es in python möglich ist, ein Modul auzurufen, welches ein Rückgabewert hat. (Sollte ein String zurückgeben)

Code: Alles auswählen

import ael
import EmailReceivers     
   
#getEmailReceivers
def getEmailReceivers():
    delimiter = ','
    
    receiversList = EmailReceivers.getEmailReceivers("BarrierPrice", EmailReceivers.getRows())

    print receiversList
    receiverString = delimiter.join(receiversList)     
    
    print receiverString
    
    return receiverString

return getEmailReceivers()
Dies gibt leider ein Fehler: SyntaxError: 'return' outside function

Geht das überhaupt in python ? ein modul aufrufen, welches ein string "an den aufrufer" zurückgibt ?

Das python-modul wird von einem kornshell-skript aufgerufen, das skript sollte dann mit dem erstellten String weiterarbeiten können.

Code: Alles auswählen

#
# for all crossed instruments, send a message
#
while read i
do
arena_message $ADS \
-username ATS \
#-password XXX \
-password XXX \
-subject "CROSSED EXOTIC" \
-server "$SERVER" \
-to  `arena_python adsp -user ATS -password XXX -filename /app/front/ZKB/BarrierPriceMonitor/lib/BarrierPriceMonitor.py` \
-message "$i  has been crossed"
echo "$i wurde Crossed" 
done < crossed.out

Beim "to" wird mein python-modul aufgerufen, welches mir ein STring z.b "tg56,t746,e311" zurückgeben soll. Um an all diese Users eine prime-message zu senden.

Könnt ihr mir allenfalls weiterhelfen ?

Besten Dank

So sieht der wichtige Teil des skripts aus:

Re: pythonfile mit rückgabewert ?

Verfasst: Montag 21. September 2009, 10:42
von cofi
Hubi hat geschrieben:Ich wollte fragen, ob es in python möglich ist, ein Modul auzurufen, welches ein Rückgabewert hat. (Sollte ein String zurückgeben)
Nein, das sagt dir doch schon der `SyntaxError`. Wo ist denn das Problem, wenn die Funktion explizit aufgerufen wird?

Eine andere Moeglichkeit waere folgendes:

Code: Alles auswählen

#modul.py
def get_email_receivers():
    ...

receivers = get_email_receivers()

Code: Alles auswählen

#main.py
from modul import receivers

Verfasst: Montag 21. September 2009, 10:47
von Hubi
Also das heisst, ich könnte direkt aus dem .ksh skript eine explizite funktion eines pythonmodules aufrufen ?

Wie müsste dann mein Aufruf in etwa aussehen ?

momentan:

-to `arena_python adsp -user ATS -password XXX -filename /app/front/ZKB/BarrierPriceMonitor/lib/BarrierPriceMonitor.py` \

kann ich das irgendwie machen, dass vom pythonmodule "BarrierPriceMonitor.py" die funktion "getEmailReceivers" aufgerufen wird ?

Verfasst: Montag 21. September 2009, 10:59
von cofi
Ah .. entschuldige, ich hatte deine Frage nur ueberflogen. Aber dein Ansatz kann so gar nicht funktionieren, da der Rueckgabe wert eine Zahl sein muss. Wenn ich das richtig sehe, kann die Kornshell ein Programm ausfuehren und dessen stdout weitergeben? Wenn ja reicht das in deinem Modul

Code: Alles auswählen

print get_email_receivers()

und den Aufruf im csh Skript musst du mit Backticks ausstatten.

P.S. Du solltest dir mal PEP 8 anschaun.

Verfasst: Montag 21. September 2009, 11:11
von snafu
Da deine Frage IMHO nicht ganz eindeutig ist, kann man sie zweierlei beantworten. Entweder du willst eine Infomation mit `print` auf den Bildschirm (also in STDOUT) schreiben oder du willst einen Fehlercode zurückgeben. Das Letztere erreicht man mit `sys.exit()`.