kzen.dev
  • Spørsmål
  • Tagger
  • Brukere
Meldinger
Belønninger
Registrering
Når du har registrert deg, vil du bli varslet om svar og kommentarer til spørsmålene dine.
Logg inn
Hvis du allerede har en konto, kan du logge inn for å sjekke nye varsler.
Det vil være belønninger for spørsmål, svar og kommentarer.
Mer
Kilde
Rediger
 prahallada
prahallada
Spørsmål

Slik angir du miljøvariabler i Python

Jeg trenger å angi noen miljøvariabler i python-skriptet, og jeg vil at alle de andre skriptene som kalles fra python (shell-skript) som vil være underordnede prosesser for å se miljøvariablene satt. Verdien er et tall.

Hvis jeg gjør os.envir["DEBUSSY"] = 1, klager den og sier at 1 må være streng. Jeg vil også vite hvordan jeg kan lese miljøvariablene i python (i den senere delen av skriptet) når jeg har angitt det.

558 2011-05-11T22:25:11+00:00 5
Salvador Dali
Salvador Dali
Redigerte spørsmål 11. mai 2015 в 9:06
Programmering
python
environment-variables
Dette spørsmålet har 1 svar på engelsk, for å lese dem logge inn på kontoen din.
Sven Marnach
Sven Marnach
11. mai 2011 в 10:27
2011-05-11T22:27:16+00:00
Mer
Kilde
Rediger
#12498424

Miljøvariabler må være strenger, så bruk

os.environ["DEBUSSY"] = "1"

for å sette variabelen DEBUSSY til strengen 1.

For å få tilgang til denne variabelen senere, bruker du bare:

print(os.environ["DEBUSSY"])

Underordnede prosesser arver automatisk miljøvariablene til den overordnede prosessen - ingen spesiell handling fra din side er nødvendig.

 phoenix
phoenix
Redigert svar 18. juni 2019 в 5:54
670
0
 Mark
Mark
12. mai 2011 в 12:29
2011-05-12T12:29:26+00:00
Mer
Kilde
Rediger
#12498427

Du må kanskje vurdere noen ytterligere aspekter for å gjøre koden mer robust;

Når du lagrer en heltallsvariabel som en miljøvariabel, kan du prøve å bruke

os.environ['DEBUSSY'] = str(myintvariable)

så for henting, bør du vurdere at for å unngå feil, bør du prøve

os.environ.get('DEBUSSY', 'Not Set')

eventuelt erstatte '-1' med 'Not Set'.

så, for å sette det hele sammen

myintvariable = 1
os.environ['DEBUSSY'] = str(myintvariable)
strauss = int(os.environ.get('STRAUSS', '-1'))
# NB KeyError <=> strauss = os.environ['STRAUSS']
debussy = int(os.environ.get('DEBUSSY', '-1'))

print "%s %u, %s %u" % ('Strauss', strauss, 'Debussy', debussy)
Valeriu
Valeriu 55958
Redigert svar 30. januar 2023 в 5:25
105
0
 sisanared
sisanared
19. april 2017 в 6:13
2017-04-19T06:13:10+00:00
Mer
Kilde
Rediger
#12498430

os.envir oppfører seg som en python-ordbok, så alle vanlige ordbokoperasjoner kan utføres. I tillegg til get- og set-operasjonene som er nevnt i de andre svarene, kan vi også ganske enkelt sjekke om en nøkkel finnes

Python 3

For python 3 bruker ordbøker nøkkelordet in i stedet for has_key.

>>> import os
>>> 'HOME' in os.environ  # Check an existing env. variable
True
...

Python 2

>>> import os
>>> os.environ.has_key('HOME')  # Check an existing env. variable
True
>>> os.environ.has_key('FOO')   # Check for a non existing variable
False
>>> os.environ['FOO'] = '1'     # Set a new env. variable (String value)
>>> os.environ.has_key('FOO')
True
>>> os.environ.get('FOO')       # Retrieve the value
'1'

Det er en viktig ting å merke seg ved bruk av os.envir:

Selv om underordnede prosesser arver miljøet fra den overordnede prosessen, hadde jeg nylig støtt på et problem og funnet ut at hvis du har andre skript som oppdaterer miljøet mens python-skriptet ditt kjører, vil det å kalle os.envir igjen ikke gjenspeile de siste verdiene.

Utdrag fra docs:

Denne tilordningen fanges første gang OS-modulen importeres, vanligvis under oppstart av Python som en del av behandlingen av site.py. Endringer endringer i miljøet som gjøres etter dette tidspunktet, gjenspeiles ikke i os.envir, bortsett fra endringer som gjøres ved å endre os.envir direkte.

os.envir.data, som lagrer alle miljøvariablene, er et dict-objekt som inneholder alle miljøverdiene:

>>> type(os.environ.data)  # changed to _data since v3.2 (refer comment below)
<type 'dict'>
Valeriu
Valeriu 55958
Redigert svar 30. januar 2023 в 5:25
 sisanared
sisanared
Redigert svar 10. oktober 2019 в 7:15
46
0
Jim Brissom
Jim Brissom
11. mai 2011 в 10:28
2011-05-11T22:28:30+00:00
Mer
Kilde
Rediger
#12498426

hvis jeg gjør os.envir["DEBUSSY"] = 1, den klager og sier at 1 har å være streng.

Så gjør

os.environ["DEBUSSY"] = "1"

Jeg vil også vite hvordan jeg leser de miljøvariablene i python (i den senere del av skriptet) når jeg har angitt det.

Bare bruk os.envir["DEBUSSY"], som i

some_value = os.environ["DEBUSSY"]
19
0
 ThiefMaster
ThiefMaster
11. mai 2011 в 10:27
2011-05-11T22:27:31+00:00
Mer
Kilde
Rediger
#12498425

Hva med os.envir["DEBUSSY"] = '1'? Miljøvariabler er alltid strenger.

13
0
Legg til spørsmål
Kategorier
Alle
Teknologi
Kultur / Fritid
Liv / Kunst
Vitenskap
Profesjonell
Virksomhet
Brukere
Alle
New
Popular
1
Ilya Smirnov
Registered 1 dag siden
2
Денис Васьков
Registered 2 dager siden
3
Dima Patrushev
Registered 5 dager siden
4
sirojidddin otaboyev
Registered 1 uke siden
5
Елена Гайдамамакинат
Registered 1 uke siden
BG
DE
EL
ES
FR
ID
IT
JA
KO
LV
NL
NO
PT
RO
TR
UK
ZH
© kzen.dev 2023
Kilde
stackoverflow.com
under lisens cc by-sa 3.0 med attribusjon