나는 python 스크립트에 환경 변수를 설정해야 하며, 자식 프로세스가 될 python(쉘 스크립트)에서 호출되는 다른 모든 스크립트가 환경 변수 세트를 볼 수 있기를 바란다. 값은 숫자입니다.
만약 내가 'os.environment'를 한다면드뷔시" = 1", '1'은 문자열이어야 한다며 불만을 토로한다. 환경변수를 설정하고 나면 python(스크립트 뒷부분)으로 읽는 방법도 알고 싶다.
환경 변수는 문자열이어야 하므로 사용
os.environ["DEBUSSY"] = "1"
변수 'DEBUSHY'를 문자열 '1'로 설정합니다.
나중에 이 변수에 액세스하려면 다음을 사용하십시오.
print(os.environ["DEBUSSY"])
하위 프로세스는 상위 프로세스의 환경 변수를 자동으로 상속하므로 특별한 작업이 필요하지 않습니다.
일부 코드에 대한 견고성을 애스펙트에서 고려해보십시오 더 할 수 있습니다.
os.environ['DEBUSSY'] = str(myintvariable)
그럼 검색할 수 있는 오류를 방지하는 고려해보십시오 전날에약혼자에게 한다.
os.environ.get('DEBUSSY', 'Not Set')
아마도 대체하십시오 1& # 39, & # 39; - # 39, & # 39 의 Set& 있지 않습니다.
그래서 모두가 함께 되어
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)
파이썬 사전, 따라서 모든 동작을 오스트런버슨 '' 같은 일반적인 사전 작업을 수행할 수 있습니다. '와' 세트 '작업' 외에 다른 답을 얻을 수 있는지, 또한 간단히 언급된 핵심 존재합니다.
파이썬 3*
>>> import os
>>> 'HOME' in os.environ # Check an existing env. variable
True
...
>>> 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'
이때 있어 한 가지 중요한 것은 '오스트런버슨 사용에 대한':
하지만, 내가 가진 부모 프로세스가 자식 프로세스를 상속됩니다 환경에서 하나의 실행하십시오 최근 문제가 있을 경우에는 다른 환경 및 깨달았습니다 업데이트하던 스크립트에만 너회의 파이썬 스크립트가 실행 중인 '다시' 동안 호출하십시오 오스트런버슨 최신 값을 반영되지 않습니다.
발췌문 의 [docs] [1]:
>. 처음 이 구성도를 캡처됩니다 os 모듈에서는 가져와집니다, >. 일반적으로 파이썬 시작프로그램을 처리 중 일부로 site.py. 변경 >. 이 시간이 지나면 환경에 대한 브라운아저씨의 반영되지 않습니다 >. 오스트런버슨 변경 사항을 제외하고 오스트런버슨 수정하여 직접.
'모든 환경 변수를 저장하는 오스트런피언스트라다' 는 모두 들어 딕트 객체에는 환경 값:
>>> type(os.environ.data) # changed to _data since v3.2 (refer comment below)
<type 'dict'>
[1]: https://docs.python.org/2/library/os.html # 오스트런버슨 " docs";
환경 변수를 문자열 값을 지정해야 합니다.
'오스트런버슨 [" DEBUSSY";] '= " 1";
그냥 읽고 싶으면 인쇄인쇄 환경 변수를 사용하여
'' 오스트런버슨 인쇄하십시오 [" DEBUSSY";]
이 변경에 대해서만 효력을 현재 공정, 이 값을 변경하십시오 영구적으로 할당된 위치에 있지 않습니다. 자식 프로세스는 부모 프로세스가 환경을 자동으로 상속됩니다.
로 세트를 가변으로:
import os
os.environ['DEBUSSY'] = '1' #Environ Variable must be string not Int
afaq 있을경우에 방관하겠나, 또는 여부를 확인할 수 있다.
메서드입니다 1:*
os.environ.get('DEBUSSY') # this is error free method if not will return None by default
'1& # 39, & # 39 반환 값' 를 받게 된다.
os.environ['DEBUSSY'] # will throw an key error if not found!
'DEBUSSY' in os.environ # will return Boolean True/False
os.environ.has_key('DEBUSSY') #last 2 methods are Boolean Return so can use for conditional statements
'사전' 오스트런버슨 액세스하세요 환경 변수를 사용할 수 있습니다.
지금 내가 가진 것은 문제 '를 사용하여 파일 내의' 만약 내가 했던 오스트시스템 배치처리 실행하십시오 사용자 환경 변수 (SET 명령을 사용하여 받을시간은 .bat 파일) 않을 것이라고 상행담관염이라고 그녀들을 단축시킵니다 파이선 환경 (하지만 자식 프로세스를 함께 만든 '오스트시스템' 함수). 파이선 환경 변수 설정, 실제로 내려받습니다 내가 사용하는 이 스크립트입니다.
import re
import system
import os
def setEnvBat(batFilePath, verbose = False):
SetEnvPattern = re.compile("set (\w+)(?:=)(.*)$", re.MULTILINE)
SetEnvFile = open(batFilePath, "r")
SetEnvText = SetEnvFile.read()
SetEnvMatchList = re.findall(SetEnvPattern, SetEnvText)
for SetEnvMatch in SetEnvMatchList:
VarName=SetEnvMatch[0]
VarValue=SetEnvMatch[1]
if verbose:
print "%s=%s"%(VarName,VarValue)
os.environ[VarName]=VarValue
함께 게임을 할 때 환경 변수 (/ 수정 / 추가 com/go/4e6b330a_kr 제거하시겠습니까), 좋은 방법은 이전 상태로 복원하십시오 http://support. 함수은 완료.
같은 일을 할 수 있습니다 '이 [질문] 에서 설명한 관리자붃 컨텍스트로 modified_environ' (https://stackoverflow.com/a/34333710/1513933) 를 복원하십시오 환경 변수.
기본 사용법:
with modified_environ(DEBUSSY="1"):
call_my_function()
이 점에 주의해야 한다고 하면 환경 변수를 설정하는 맞추기바인딩 bash 평가, t # 39 이 won& 너희는너희가 저장할 수 있을 것으로 기대하고 있다. 예:
from os import environ
environ["JAVA_HOME"] = "$(/usr/libexec/java_home)"
전에 이 같은 환경 변수 설정 smartupdate 평가할 수 있습니다.
from os import environ
from subprocess import Popen, PIPE
bash_variable = "$(/usr/libexec/java_home)"
capture = Popen("echo " + bash_variable, stdout=PIPE, shell=True)
std_out, std_err = capture.communicate()
return_code = capture.returncode
if return_code == 0:
evaluated_env = std_out.decode().strip()
environ["JAVA_HOME"] = evaluated_env
else:
print("Error: Unable to find environment variable " + bash_variable)