2017-03-07 4 views
0

Ich suchte hier in vielen Posts nach einer Lösung, aber vielleicht suchte ich nach dem falschen Satz. Ich bin neu in Python, mein Code Problem ist folgendes:Dynamische Variable Python in einer Schleife

from yahoo_finance import Share 
for line in open('fcts.txt'): 
    yahoo = Share('YHOO') 
    print (yahoo +'.' + line) 

es sollte grundsätzlich die folgenden Schritte aus, aber für jede Funktion innerhalb fcts.txt:

from yahoo_finance import Share 
yahoo = Share('YHOO') 
print (yahoo.get_open()) 

während fcts.txt enthält verschiedene Funktionen wie

get_open() 
get_change() 
... 

Danke, Stefan

+0

Ich kann deine Frage nicht verstehen. Was ist in fcts.txt? Python-Funktionen? – GPhilo

+0

Namen von Python-Methoden einer 'Share'-Instanz. – Alfe

+2

Warum hast du einen seltsamen Halbcode in deiner TXT-Datei ...? Scheint nicht sehr gesund. – deceze

Antwort

1

können Sie Methoden aufrufen, indem Sie Namen wie folgt aus:

from yahoo_finance import Share 

with open('fcts.txt') as methodsFile: 
    for methodName in methodsFile: 
    yahoo = Share('YHOO') 
    method = getattr(yahoo, methodName.strip()) 
    print (method()) 

Aber es sieht ziemlich grob zu mir.

+1

Ihre 'fcts.txt' sollte jedoch Zeilen wie' get_open' und 'get_change' ohne die Klammern enthalten. Wenn Sie Klammern in der Datei haben, verwenden Sie stattdessen 'methodName.strip ('() \ n')' '. – Alfe

+0

Danke Alfe für die schnelle Lösung. Funktioniert perfekt und ich änderte die fcts.txt wie du erwähnt hast. – scounce

+0

:) Willkommen bei StackOverflow! Wenn Sie der Meinung sind, dass eine Antwort das Problem von der Frage gelöst hat, können Sie es akzeptieren (klicken Sie auf den Haken links neben der Antwort). – Alfe

Verwandte Themen