pythonfile mit rückgabewert ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hubi
User
Beiträge: 17
Registriert: Mittwoch 17. Juni 2009, 10:58

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:
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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
Hubi
User
Beiträge: 17
Registriert: Mittwoch 17. Juni 2009, 10:58

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 ?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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()`.
Antworten