Dateien einbinden

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.
Stolzi

Dateien einbinden

Beitragvon Stolzi » Mittwoch 18. August 2004, 14:02

Hallo,
es würde hier zwar sicher shcon was dazu geben, aber ich hab einfach nicht das richtige gefunden.
Und zwar ist mir noch nicht ganz klar wie man sowas in Python am besten löst:
Ich hatte in PHP zwei Sachen die ich auf die selbe Weise löste: in grösseren Projekten hatte ich eine Konfigurationsdatei wo die wichtigsten Variablen zum schnellen editieren drinnen standen und mehrere Dateien mit Funktionen/Klassen. Diese wurden in jede Seite dieses projekts mittels require(), oder include() eingebunden und damit wars getan.
Ich schätze mal dass in Python Dateien mit Funktionen etc. eher per import eingebunden werden, oder? Aber wie die Dateien mit den Variablen? Auch per import? Hat sicher den Vorteil dass ich mir damit sicher keine Variablen überschreibe (muss ja um auf die Variable zuzugreifen Dateiname.Variable schreiben soviel ich gelesen habe). Oder verwende ich hier dann eher execfile()? Oder liege ich ganz falsch?

Danke Danke
Stolzi
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Mittwoch 18. August 2004, 14:37

Hi Stolzi!

Ich würde das mit import machen. execfile kannte ich noch gar nicht, muß mal schaun was das kann :wink:

Gruß, mawe
Gast

Beitragvon Gast » Mittwoch 18. August 2004, 15:01

Also würdest du _beides_ mit import machen, oder?
execfile() ist meiner Meinung nach ziemlich das was require() in PHP war... Es führt den Inhalt einer Datei als Code aus. Genauso wie exec() einen String als Code ausführt.
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 18. August 2004, 15:14

Hi Stolzi,

Zu den Variablen:
Ich würd mal sagen, da liegst Du ganz falsch ;)

Versuch mal Deine Programme mit Python so zu machen, wie es "Pythonlike" ist. Also statt vieler Globaler Variablen, wie unter PHP üblich lieber mit Klassen Arbeiten. Wenn Du bestimmte Werte immer wieder brauchst, verwende ein Dicitonary, das du mit verschiedenen Methoden in eine Datei speichern oder auch aus einer solchen lesen kannst. Auch hier im Forum unter Codesnippets gibts ein paar Beispiele. Oder such mal im Forum nach "globals".
exec, eval und execfile würde ich auch aus sicherheitstechnischen Überlegungen möglichst vermeiden.


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Beitragvon Stolzi » Mittwoch 18. August 2004, 16:02

Ganz falsch? Auwaia ;-)

OK ein Dicitonary ist mir ein Begriff. Dürfte ziemlich das sein was in PHP ein Assizioatives Array ist.
Nur habe ich in den Codesnippets leider nix brauchbares gefunden :-( Viell hab ich aber auch nur blöd geschaut.
Also wie ich in einem Dictionary meine Daten speichere ist mir soweit klar. Nur eben der Teil dann noch nicht wie ich es einbinde. Liege ich da viell richtig?:
Ich habe eine Datei sepp.py mit dem Dictionary abc{ "username":"stolzi" }. Nun möchte ich auf die Daten in sepp.py in einer anderen Datei zugreifen:
import sepp
DerUsername=sepp.abc["username"]
Ist das ungefähr so wie ichs machen sollte? Und dann halt auf die selbe Art mit den Funktionen...
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 18. August 2004, 16:23

Das währ eine der Möglichkeiten.
hier noch ein paar Links aus dem Forum:
http://python.sandtner.org/viewtopic.php?t=1871
http://python.sandtner.org/viewtopic.ph ... ght=global

Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Beitragvon Stolzi » Mittwoch 18. August 2004, 16:35

Danke für die Hilfe!

Wer ist online?

Mitglieder in diesem Forum: harryberlin