[Python-de] Testen, ob Variabel existiert

Diez B. Roggisch deets at web.de
Fre Sep 3 20:17:13 CEST 2004


>
> if access(pfad1+'/progname', X_OK) or access(pfad2+'/progname', X_OK):
>     if group:
>         rbprogname = gtk.RadioButton(label = 'ProgName', group = group)
>     else:
>         rbprogname = gtk.RadioButton(label = 'ProgName')
>         group = rbprogname
>     vbox1.pack_start(rbprogname)
>
> progname ist im Skript immer der Name des gesuchten Programms.
>
> Kann jemand meiner Logik auf die Sprünge helfen?

Wieso verwendest du keine dicts?

progs = {}
if access(pfad1+'/progname', X_OK) or access(pfad2+'/progname', X_OK):
    if group:
        progs[rbprogname] = gtk.RadioButton(label = 'ProgName', group = group)
    else:
        progs[rbprogname] = gtk.RadioButton(label = 'ProgName')
        group = progs[rbprogname]
    vbox1.pack_start(progs[rbprogname])


Wobei die Sache mit der Variablen group mir nicht ganz klar ist.

Ausserdem ist dein acces-test nicht besonders clever - was wenn du mehr als 2 
Pfade hast? Da sollte eine Liste hin - ungefaehr so:

paths = ["pfad1", "pfad2"]
prognames = ["prog1", "prog2]

for progname in prognames:
    found = False
    for path in paths:
        if access(os.path.join(path, progname)):
            break
    print "Found %s at %s" % (progname, path)

MfG Diez