Seite 1 von 1

Prüfen, ob Liste existiert

Verfasst: Samstag 20. Mai 2017, 17:06
von gahleitner
Hallo!

Gibt es eine Möglichkeit, zu prüfen, ob eine Liste bereits existiert? Falls sie nicht existiert soll sie erstellt werden.
So wie es

l=os.access("Macros",os.F_OK) #Ordner und Datei erstellen
if l==False:
os.mkdir("Macros")

gibt, um nicht vorhandenen Odner zu erstellen.

Re: Prüfen, ob Liste existiert

Verfasst: Samstag 20. Mai 2017, 17:12
von snafu
Meinst du wirklich Existieren oder willst du bloß prüfen ob die Liste befüllt ist?

Code: Alles auswählen

# Variante 1
try:
    print(my_list)
except NameError:
    print('Liste existiert nicht')

# Variante 2
if len(my_list) > 0:
    print(my_list)
else:
    print('Liste ist leer')

# Variante 2 (kürzer)
if my_list:
    print(my_list)
else:
    print('Liste ist leer')

Re: Prüfen, ob Liste existiert

Verfasst: Samstag 20. Mai 2017, 17:57
von BlackJack
@gahleitner: Wobei man dazu sagen sollte das ein `NameError` in der Regel ein Programmierfehler ist. In dem Falle würde man nicht prüfen ob eine Name existiert, denn entweder der existiert, oder man hat ein fehlerhaftes Programm und sollte den Fehler beheben statt den später im Programm irgendwie umgehen zu wollen.

Auch ist Dein gezeigter Quelltext für das Verzeichnis nicht wirklich „pythonisch“. In Python legt man einfach das Verzeichnis an und reagiert entsprechend auf eventuell dabei auftretende Ausnahmen. Das ist zudem sicherer/robuster, denn zwischen Test und Aktion bei Dir kann ja durchaus noch etwas passieren.

Re: Prüfen, ob Liste existiert

Verfasst: Samstag 20. Mai 2017, 21:38
von Melewo
Hatte das mal vor einigen Tagen durchprobiert, dann eine bessere Lösung gefunden. Doch so wäre es wohl zur Not auch gegangen, wenn Du nur wissen möchtest, ob eine Variable existiert, denke ich mir. Oder?

Code: Alles auswählen

def is_defined(var):
    if var in globals() or var in locals():
        return True
    else:
        return False

# Den Bezeichner als String abfragen   
if is_defined("my_list"):
    print("Ist True")
else:
    print("Ist False")

Re: Prüfen, ob Liste existiert

Verfasst: Samstag 20. Mai 2017, 21:43
von Alfons Mittelmeyer
Also, ich mache das so:

Code: Alles auswählen

my_list = None

if not my_list:
    my_list = NewList()

Re: Prüfen, ob Liste existiert

Verfasst: Samstag 20. Mai 2017, 21:55
von Sirius3
@Melewo: globals enthält nur die globalen Variablen, locals nur "var". Also nein, das funktioniert nur in Ausnahmefällen

Re: Prüfen, ob Liste existiert

Verfasst: Samstag 20. Mai 2017, 22:15
von Alfons Mittelmeyer
@gahleitner: Die Lösung ist doch relativ einfach. Du machst für die Listen keine Variablen, sondern trägst sie in ein Dictionary ein. Und nachher kannst Du abfragen, ob die Liste da drin ist.

Re: Prüfen, ob Liste existiert

Verfasst: Sonntag 21. Mai 2017, 06:29
von snafu
Jepp. Anstelle des NameErrors ist das Definieren des Namens mit None sauberer und auch üblich. Den tatsächlich zu verwendenden Wert setzt man bei Bedarf nachträglich ein.