Vielen Dank, das sieht wunderbar aus.
Die Logik verstehe ich nur nicht.
Zeile sys.frozen wird versucht auszuführen.
Wenn hier ein Fehler auftritt (AttributeError), ist das Sys eigentlich nicht frozen und __file__ kan benutzt werden
Die Technik dahinter verstehe ich nicht ganz und ich würde gerne das "dahinter" auch gerne begreifen
Wie aus Python eine einfache exe erstellen (ohne GUI)
@nfb503: Der Import von `attrgetter` kann weg, das wird doch nirgends verwendet.
Das steht auch fast so im Code (vom "ausführen" mal abgesehen). Es wird ein Zugriff auf sys.frozen versucht. Existiert das nicht, so kommt es zu einem AttributeError und es wird __file__ verwendet um den Pfad zu bestimmen.nfb503 hat geschrieben:Die Logik verstehe ich nur nicht.
Zeile sys.frozen wird versucht auszuführen.
Wenn hier ein Fehler auftritt (AttributeError), ist das Sys eigentlich nicht frozen und __file__ kan benutzt werden
Ich verstehe jetzt das Verständnisproblem nicht.
Von dir kommt der Code doch. Du solltest schon verstehen was dein ``getattr(sys, 'frozen',False)`` macht Ich habe es einfach nur umformuliert.nfb503 hat geschrieben:Also ist .frozen eine Eigenschaft, die nur gesetzt wird, wenn es "eingefroren" ist, richtig?
Das Leben ist wie ein Tennisball.
Nein, von mir kommt der Code auch nicht
Aber das Umformulieren war toll, hier meine neue def, die auch funktioniert.
Im Prinzip muss ich in dem Fall wohl auch nicht mehr wissen, denn ich habe die Funktion getestet.
Aber das Umformulieren war toll, hier meine neue def, die auch funktioniert.
Im Prinzip muss ich in dem Fall wohl auch nicht mehr wissen, denn ich habe die Funktion getestet.
Code: Alles auswählen
import sys
def IsSysFrozen():
try:
sys.frozen
except AttributeError:
return False
else:
return True
@nfb503: In dem Fall ist die Ausnahmebehandlung übertrieben. Das kann man kürzer schreiben als (ungetestet):
Die Ausnahmebehandlung macht nur wirklich Sinn wenn man damit den zusätzlichen Test vermeidet.
Code: Alles auswählen
import sys
from functools import partial
def is_frozen():
return hasattr(sys, 'frozen')
# oder
is_frozen = partial(hasattr, sys, 'frozen')