Python Ordner includen?

3 Antworten

Um Gottes Willen. Ich bin ja einiges gewöhnt, aber das ist schon eine spezielle Variante von verrückter Idee. Kommt das aus einem dieser YT-Tutorials?

os.system("python test.py")

Das hier oben bedeutet: starte eine neue Instanz von Python über die Shell, lass sie das gewählte Python-Programm ausführen, Ende. Das macht für deinen laufenden Prozess gar nichts.

Der korrekte (und funktionierende) Weg zum Einbinden von Code ist über das Modulsystem, sprich das Schlüsselwort "import". In Einzelfällen kann auch eval() sinnvoll sein.

troloxi 
Fragesteller
 21.12.2020, 16:04

Ich hatte am Anfang versucht es zu importen, hat aber nicht geklappt.

Habe das probiert:

def question():
  print "where are the nuclear wessels?"

from chekov import question
question()

Das funktioniert aber nicht.

Jedenfalls, habe ich zwar verstanden das ich es mit import importieren muss, aber wie kann ich ein ganzen Ordner mit allen Python Files darin importieren?

0
alfredo153  21.12.2020, 17:02
@troloxi
Das funktioniert aber nicht.

Ja, weil du den Namen qualifizieren musst:

chekov.question()
aber wie kann ich ein ganzen Ordner mit allen Python Files darin importieren?

Du kannst den Package-Mechanismus verwenden, ob das aber genau das tust was du willst, musst du dir ansehen. Ich bin mir eigentlich nicht sicher wofür du das tun willst.

0
alfredo153  21.12.2020, 17:11
@troloxi

Ah, ich seh gerade, du hast die Form from-import verwendet, da sollte es tatsächlich ohne Qualifikation gehen. Die Frage ist halt ob der Import überhaupt geklappt hat.

0
troloxi 
Fragesteller
 21.12.2020, 20:07
@alfredo153

Das klappt ja schon einmal gut. Nur ich will direkt alle Files Importieren und das darf ich nicht manuell machen.

z.B. wenn die Datei test.py heißt funktioniert das so

import folder.test

aber in dem "folder" sind 3 weiter Dateien:

123.py
test.py
hallo.py
moin.py

Jetzt könnte ich es so für jede Datei einzeln machen:

import folder.123
import folder.test
import folder.hallo
import folder.moin

Ich kann das in meinem Fall aber nicht lösen! Ich muss direkt alle Files auswählen.

Aber:

import folder

funktioniert z.B. nicht.

Also:

Ich will direkt alle Dateien aus meinem Ordner auswählen und einbinden und das darf ich nicht manuell machen

0
alfredo153  22.12.2020, 10:50
@KarlRanseierIII

Ich frage mich immer noch ob so ein Hack wirklich nötig ist. Ist in den Files überhaupt nennenswert Code drin, oder sind das eh nur Daten? Dann kann man sich das sparen und entsprechend ganz normal zur Laufzeit reinlesen.

1

Prüfe (durch Ausprobieren), ob Pythons Methode os.system() auch Parameter erlaubt, die Wildcards enthalten.

Sollte das nicht der Fall sein, musst du tatsächlich den Befehl für jede Datei einzeln hinschreiben.

|

Wie auf Seite https://www.python-kurs.eu/os_modul_shell.php erklärt wird, nimmt os.system() als Parameter einen Shell-Befehl. Dies spricht dafür, dass Wildcards erlaubt sind.

For loop mit allen dateien im ordner?

Woher ich das weiß:Hobby – Kann das irgendwie
troloxi 
Fragesteller
 21.12.2020, 15:28

Ich weiß nicht genau was du meinst, ich erkläre es aber noch einmal genauer.

In meinem Haupt Python File habe ich meine ganzen anderen .py Files hinzugefügt, damit es übersichtlicher ist.

Jetzt sieht das in meiner Haupt Datei so aus:

os.system("python testordner/test.py")
os.system("python testordner/test1.py")
os.system("python testordner/test2.py")
os.system("python testordner/test3.py")

Ich möchte aber am besten direkt alle Python Files aus dem Ordner "testordner" importieren und dies nicht für jedes einzeln tun. Geht das?

0
FroschNIZE  22.12.2020, 10:47
@troloxi

Achtung pseudo code:

for i in ordner.namen:

os.system(f"python testordner/{i}")

0
troloxi 
Fragesteller
 22.12.2020, 14:09
@FroschNIZE
  for i in ordner.namen:
NameError: name 'ordner' is not defined

obwohl mein Ordner auch Ordner heißt, funktioniert das irgendwie nicht

0
FroschNIZE  22.12.2020, 15:47
@troloxi

Das war pseudo code, kann also so nicht verwendet werden. Du musst nach einer methode suchen, mit der du durch einen ordner iteraten kannst. Ich würde diese imports übrigens über imports machen.

0