Seite 1 von 1

Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 09:29
von ganja
Hallo miteinander,

wie macht man es richtig (ohne return), eine Variable an ein anderes script zu übergeben und in anderem script weiter verarbeiten?
Ist das überhaupt möglich?
Oder geht es mit subprocess.run nicht, habe mir ein Beispiel angeschaut müsste gehen, aber den empfang zu verarbeiten geht irgendwie bei mir nicht.

Nur wenn a 1 ist dann soll, a an anderes script übergeben werden dort irgendwas mit a gemacht werden.

Vielen Dank

z.b

Code: Alles auswählen

#script1.py
def inscript2():
    a = 1
    subprocess.run(['anderes script2', str(a)], #muss hier noch was rein? #wie check=True)
    
def weiter_nach _dem subprocess():
    print ('geht')

#wie empfange ich jetzt die variable in script2
#script2.py

a_aus_script1 = #was muss hier rein?

def ausscript1():
    #hier variable verarbeiten aus script1 

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 09:37
von __deets__
Normalerweise importiert man das als Modul & ruft den Code direkt auf. Statt einen Unterprozess zu bemühen. Warum denkst du das so machen zu müssen?

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 09:45
von ganja
@__deets__ weil ich denke das ich es so machen muss, weil ich wieder zu script1 zurück muss nach dem script2 fertig ist.
Wenn es geht so wie ich es denke sag mir bitte wie? Sonst verwirrst du mich nur :)
Hast du mir ein bsp wie es geht, auch mit dem Import vom Modul, ich möchte Teile Trennen in script1 und script2, vielleicht ist es bessere Lösung mit Import vom Modul ich weiß es nicht, daher habe ich gefragt.
Danke dir __deets__

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 09:50
von __deets__
So wie du auch aus Python Standard Paketen importieren & Funktionen benutzen kannst, kannst du das mit deinen Skripten.

Code: Alles auswählen

import supermodul 

supermodul.funktion(argument)

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 09:51
von ganja
__deets__ Ok Danke, und wie geht es mit dem subropcess?
Danke

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 10:05
von __deets__
Warum? Wenn du keinen Grund hast, einen Prozess zu benutzen, dann macht man das nicht. Was ist dein Grund?

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 10:22
von ganja
__deets__ ich habe einen Grund, sonst würde ich es nicht versuchen.
ich muss a nach script2 übergeben dann a im script2 verarbeiten und dann wieder zurück zu script1 und weiter machen sonst hätte ich meine frage nicht gestellt.
script2 rufe ich nirgendwo auf, wie soll script2 wissen das a vorhanden ist, ich rufe nur script1 auf und wenn im script1 a auftaucht dann wird script2 aus dem script1 gestartet und a übergaben an script2 verarbeitet und dann zurück zum script1 weiter machen.
Du verwirrst mich mit Absicht :) :)

Danke dir trotzdem, jeder tipp jeder Hinweis bringt mich weiter Danke

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 10:28
von __deets__
Wenn man eine Funktion aus einem anderen Skript aufrufen will, IMPORTIERT man das, und ruft sei auf. Warum glaubst du das du das nicht tun kannst, oder solltest?

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 10:30
von ganja
__deets__ das habe ich dir oben erklärt!

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 10:32
von __deets__
Hast du nicht. Wenn hier jemand verwirrend ist, dann du 🤷‍♂️ Ich sage dir, subprocess.run ist nicht die Antwort auf dein Problem. Warum glaubst du das nicht? Offensichtlich beherrschst du Python nicht ausreichend. Da ist ja völlig ok. Wenn man dann aber um Hilfe bittet, und die Hilfe gleich anschließend ausschlägt, weil man meint, es besser zu wissen - Joa. Dann eben nicht.

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 10:55
von ganja
__deets__ da hast du recht ich beherrsche es nicht so wie du.
Darum habe ich hier meine Frage gestellt.
Die Hilfe die von dir kam, habe ich nicht ausgeschlagen.
Ich habe versuch dir mein Problem zu erklären warum ich subprocess verwende.
Du hast versucht mir zu helfen ich bin dir auch dankbar.
Nur ist es irgend wie als ob ich nach der Farbe blau frage und du mir etwas von Farbe Gelb erzählst.
Meine Kenntnisse sind deutlich unter deinen, das steht ausser Frage, in anderen fällen hast du mir auch geholfen.
In dem fall jetzt, vielleicht weil ich nicht auf deinem Kenntnis stand bin verstehe ich nicht, wie kann script2 wissen das a vorhanden ist im script1, ausser das ich aus script1 das script2 aufrufe und a übergebe.

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 10:59
von sparrow
Script 2 muss gar nichts von Script 1 wissen.
Script 2 ist egal, von wem es importiert wird.
Script 2 ist auch egal, wer es aufruft.

Du importierst Script 2 in Script 1 und rufst die Funktion auf. Fertig.

script1:

Code: Alles auswählen

import script2
gruss = script2.generier_hallo("Hans")
print(gruss)
script2:

Code: Alles auswählen

def generier_hallo(name):
    return f"Hallo {name}"
    
Aber jetzt mal ernsthaft. Das sind absolute Grundlagen. Und du bist hier seit 6 Jahren angemeldet. Du musst schon ein bisschen was tun.

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 11:05
von __deets__
Indem du dein a als Argument an die Funktion übergibst. Wieso glaubst du das geht nicht? Aber bei subprocess.run - ganz genauso einer Funktion aus einem anderen Modul! - glaubst du, du kannst a übergeben 🤷‍♂️ Wieso geht das da deiner Meinung nach, aber nicht, wenn es eine andere Funktion ist? Das macht doch gar keinen Sinn.

Und ganz allgemein: ich erzähl dir davon, weil du dich verrannt hast. Du fragst, wie du mit einem Löffelstiel ein Loch bohren kannst. Klar geht das irgendwie. Aber wenn ich dir von der Wunderwelt der Bohrer erzähle, wieso bestehst du auf dem Löffelstiel? Da müsstest du dann schon darlegen, dass du gerade in Alcatraz einsitzt.

Wenn du Importe und Funktionsargumente nicht verstehst, hier ist das offizielle Tutorial dazu: https://docs.python.org/3/tutorial/modules.html

Aber lös dich mal von der Vorstellung, subprocess.run hätte was mit deinem Problem zu tun.

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 11:10
von ganja
@sparrow Danke
mit return habe ich das verstanden.
Was ich nicht verstehe ist wie rufe ich script2 auf aus script1 wenn a vorhanden ist, ausser mit subprocess, anscheinend so wie du es mir gerade im bsp zeigst, das werde ich mal testen und berichten.

Danke sparrow, Danke __deets__

Re: Variable Übergabe an anderes script

Verfasst: Freitag 10. Dezember 2021, 12:13
von ganja
@sparrow Danke, leider komme ich nicht dazu täglich Python zu benutzen muss leider andere Sachen tun und mich damit auseinander setzen, aber ich denke, ich bin deutlich Vorwärts gekommen mit eurer Hilfe und Tipps. Danke dein bsp hat mich auf die Lösung gebracht. Vielen vielen Dank

@__deets__ Danke , hast recht ich hatte mich an dem Löffelstiel verbissen und wollte nichts von den Bohrern wissen, habe jetzt auch keine ausrede, ich wollte und dachte subprocess ist es, und habe dann auch nicht verstanden wo du mich hin lenken wolltest, sorry. Vielen vielen Dank

Re: Variable Übergabe an anderes script

Verfasst: Montag 13. Dezember 2021, 15:08
von ganja
Hallo,
hab wieder ein kleines Problem.
Nach dem ich jetzt das script2 aufrufe, bekomme ich aus der DB eine liste
[(20, 'a_email', b),(20, 'b_email', a),(20, 'c_email', a)]

Wie kann ich mein Problem besser eleganter lösen, auch wenn mal insgesamt 5 oder 10 emails in der Liste sind?
Kann mir jemand helfen mit der for Schleife ums hinzubekommen, oder ist es da etwas anderes als eine Schleife?

Danke


Jetzt möchte ich durch die liste gehen und und überall wo Element a die emails zusammen fügen, und auch bei Element b, ich poste mal was ich da versuche

Code: Alles auswählen

def main(id):
    if id != None:
        rows = rückwert(id)
        print (row, ' alles')
        
        for row in rows:
            id = str(row[0])
            mail = row[1]
            ist = row[2]
        
        1email = [item for item in row if a in item]
         if 1email:
             email = 1email[0][1]+','+1email[1][1]
             print (email)
             # die ausgäbe passt, nur emails drin so wie ich es brauche.

Re: Variable Übergabe an anderes script

Verfasst: Montag 13. Dezember 2021, 15:25
von pillmuncher
1email ist kein gültiger Name:

Code: Alles auswählen

>>> 1email = 123
  File "<stdin>", line 1
    1email = 123
    ^
SyntaxError: invalid decimal literal
Außerdem ist deine Einrückung ist kaputt. Auch anderweitig ist dein Code nicht sinnvoll. Über die Elemente einer Liste zu iterieren und in eine for-Schleife Werte in lokale Variablen zu schreiben, mit denen du dann nichts machst, ist irgendwie... naja - sinnlos. Im Übrigen: Skripte rufen nicht andere Skripte auf, sondern man ruft Funktionen auf, die ggf. aus anderen Modulen importiert werden. Wenn du den Unterschied nicht verstehst, solltest du möglicherweise nochmal das Tutorial durcharbeiten: https://docs.python.org/3/tutorial

Re: Variable Übergabe an anderes script

Verfasst: Montag 13. Dezember 2021, 15:31
von ganja
Vielen Dank Pillmuncher