Hi,
mit getenv() sich eine Environment-Variable zu holen ist ja sehr praktisch, ist es aber auch irgendwie möglich durch eine Liste alle Environments zu iterieren - bzw. einfach irgendwie alles was da an Variablen rumfliegt in eine Liste zu bekommen?
danke
os.getenv() -> Liste von Environments
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo wivaxing!
``os.environ``
mfg
Gerold
``os.environ``
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hoi,
os.environ ist womöglich was Du suchst. Ist zwar keine Liste, sondern ein dict, aber das ist ja auch nur sinnvoll. Bevor Du aber anfängst dieses dict direkt zu manipulieren, lies dies mal durch: http://docs.python.org/lib/os-procinfo.html
hoffe, ich habe Dich richtig verstanden,
Christian
edit: zu spät ...
os.environ ist womöglich was Du suchst. Ist zwar keine Liste, sondern ein dict, aber das ist ja auch nur sinnvoll. Bevor Du aber anfängst dieses dict direkt zu manipulieren, lies dies mal durch: http://docs.python.org/lib/os-procinfo.html
hoffe, ich habe Dich richtig verstanden,
Christian
edit: zu spät ...
Vielen Dank - das ist klasse.
Ist es evtl. auch möglich unaufgelöste Definitionen aus den Variablen zu erhalten? Ich kann ja in den Variablen auch auf andere verweisen
set BSP_A = C:\DirA
set BSP_B = %BSP_A%\DirB
Ist es evtl. auch möglich unter Python den Wert von Variable BSP_B als %BSP_A%\DirB und nicht als C:\DirA\DirB geliefert zu kommen?
danke
Ist es evtl. auch möglich unaufgelöste Definitionen aus den Variablen zu erhalten? Ich kann ja in den Variablen auch auf andere verweisen
set BSP_A = C:\DirA
set BSP_B = %BSP_A%\DirB
Ist es evtl. auch möglich unter Python den Wert von Variable BSP_B als %BSP_A%\DirB und nicht als C:\DirA\DirB geliefert zu kommen?
danke
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo wivaxing!
Ja, dass funktioniert.
mfg
Gerold
Ja, dass funktioniert.
Code: Alles auswählen
>>> import os
>>> os.path.expandvars("${HOMEDRIVE}${HOMEPATH}")
'J:\\Dokumente und Einstellungen\\Gerold'
>>> os.path.expanduser("~")
'J:\\Dokumente und Einstellungen\\Gerold'
>>>
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Danke, wobei ich ( glaub ich ) was anderes meine. Ich möchte Environment-Variablen mit anderen Variablen drin auslesen können und auch wieder setzen können.gerold hat geschrieben:Hallo wivaxing!
Ja, dass funktioniert.
Also wie im Beispiel oben will ich den relativen Pfad %BSP_A%\DirB einer Variable und nicht den absoluten, aufgelösten haben. Ebenso möchte ich Variablen Werte zuweisen können wiederum mit Verweisen auf andere Variablen. Ist das irgendwie machbar?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nein, nicht aufgelöste Variablen gibt es nicht, sie werden ja nicht vom Prozess aufgelöst sondern von der Shell. Also sieht der Python-Interpreter, wie jedes andere Programm, sie nur in "aufgelöster" Form. Das ist auch ganz gut so, denn sonst müsste jedes Programm, welches Umgebungsvariablen verwendet sie selbst auflösen und da würde es sicherlich einige Programme geben, die das nicht können. Außerdem kann die Variablen-Syntax von Shell zu Shell wechseln, dann müsste jedes Programm alle möglichen Syntaxvariationen verstehen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo wivaxing!
Meine Glaskugel gibt mir nur ganz schwache Signale...
Willst du vielleicht ``string.Template`` und Umgebungsvariablen miteinander verbinden?
http://docs.python.org/lib/node40.html
mfg
Gerold
PS: Umgebungsvariablen bekommst du nicht "unaufgelöst" zurück. Aber du könntest (nur unter Windows!!!) die "${}" innerhalb der Umgebungsvariable statt "%%" verwenden.
Meine Glaskugel gibt mir nur ganz schwache Signale...
Willst du vielleicht ``string.Template`` und Umgebungsvariablen miteinander verbinden?
http://docs.python.org/lib/node40.html
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import os
from string import Template
tmpl = Template("${HOMEDRIVE}${HOMEPATH}")
vars = dict(os.environ) # Kopie der Umgebungsvariablen erstellen
vars["HOMEDRIVE"] = "Z:"
print tmpl.safe_substitute(vars)
# --> Z:\Dokumente und Einstellungen\Gerold
Gerold
PS: Umgebungsvariablen bekommst du nicht "unaufgelöst" zurück. Aber du könntest (nur unter Windows!!!) die "${}" innerhalb der Umgebungsvariable statt "%%" verwenden.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ich hoffte eher, daß man zusätzlich die Möglichkeit hätte auf die entsprechende OS-Api zuzugreifen und sich diese Definition zu holen. Natürlich nicht per default - Python könnte ja seinen eigenen Syntax verwenden und so diese Werte transferieren.Leonidas hat geschrieben:Nein, nicht aufgelöste Variablen gibt es nicht, sie werden ja nicht vom Prozess aufgelöst sondern von der Shell. Also sieht der Python-Interpreter, wie jedes andere Programm, sie nur in "aufgelöster" Form. Das ist auch ganz gut so, denn sonst müsste jedes Programm, welches Umgebungsvariablen verwendet sie selbst auflösen und da würde es sicherlich einige Programme geben, die das nicht können. Außerdem kann die Variablen-Syntax von Shell zu Shell wechseln, dann müsste jedes Programm alle möglichen Syntaxvariationen verstehen.
Du meinst beim Setzen? Beim Setzen wäre es für mich interessanter eine Definition zu setzen, die das OS dann auflöst und nicht schon in Python.gerold hat geschrieben:PS: Umgebungsvariablen bekommst du nicht "unaufgelöst" zurück. Aber du könntest (nur unter Windows!!!) die "${}" innerhalb der Umgebungsvariable statt "%%" verwenden.
BTW: wenn das nur in der Shell landet, dann überstehen Änderungen an den Variablen auch nur die Shell-Sitzung?