[Python-de] Testen, ob Variabel existiert

Diez B. Roggisch deets at web.de
Mon Sep 6 18:26:21 CEST 2004


Hallo,

> Ich habe jetzt die Zeile "if access(path+'/'+wm, X_OK):" durch if
> "access(path.join(path, wm), X_OK):" ersetzt.
>
> Beim Aufruf des Skriptes erhalte ich diese Fehlermeldung:
>
> TypeError: join() takes exactly one argument (2 given)
>
> Laut meinem schlauen Büchlein ist der Aufruf von join richtig. Daher
> versteh ich den Fehler nicht so ganz.

Ich auch nicht - ist das wirklich genau die Zeile? Und wenn ja, wie genau 
sehen dann path und wm aus?

> Das Label ist immer der Aufruf des WMs. Siehe ganz oben (label = wm).
> Eigentlich wollte ich entsprechend die Labels ändern. Zumindest für
> Xfce4, KDE und Gnome. Der Aufruf startxfce4, startkde und gnome-session
> als Label sieht nicht sehr schön aus.
>
> Aber als Lösung dafür ist mir auch nur dieses eingefallen.
>
> [ ... Testen ob WM existiert ... ]
> if wm == 'gnome-session':
>     label = 'Gnome'
> elif wm == 'startkde':
>     label = 'KDE'
> elif wm == 'startxfce4':
>     label = 'XFce4'
> else:
>     label = wm
> [ ... Aufbau der RadioButton ... ]


Ne. Statdessen ein dict wie folgt:

exe2name = {"gnome-session" : "Gnome", "startfce4" : "XFce4"} 

und so weiter.

Dann so:

label = exe2name(wm, wm)

lies mal in der python-doku nach was get(..) auf dicts tut.


> Kannst du mir das genauer erklären? Ich habe nur in einem meiner Bücher
> was über map() gefunden. Aber weder das noch die Info von help(map)
> verstehe ich wirklich.

Aeh, map und dict sind fuer mich synonym - das liegt daran, das in java dicts 
maps heissen. Und map() als Funktion hat damit nix zu tun. Ich haette da 
praeziser sein muessen, bin in  der Terminologie verrutscht.

> Zum Beispiel für mögliche WMs und das Label. Ich habe aber nirgendwo in
> meinen Büchern einen Hinweis gefunden, wie man das am Besten realisiert.
>
> Hast du da vielleicht auch einen Tipp für mich?

Ich weiss ja nicht was du fuer mehr oder minder schlaue Bucher hast - aber 
lass dir gesagt sein, das google und die Python module-docs dein Freund sind. 
Da steht zB auch ConfigParser drin.

Diez