草庐IT

environment-variables - 临时修改当前进程的环境

我使用以下代码临时修改环境变量。@contextmanagerdef_setenv(**mapping):"""``with``contexttotemporarilymodifytheenvironmentvariables"""backup_values={}backup_remove=set()forkey,valueinmapping.items():ifkeyinos.environ:backup_values[key]=os.environ[key]else:backup_remove.add(key)os.environ[key]=valuetry:yieldfinall

python - os.getenv 和 os.environ 看不到我的 bash shell 的环境变量

我在ubuntu13.04,bash,python2.7.4解释器看不到我设置的变量。这是一个例子:$echo$A5$python-c'importos;printos.getenv("A")'None$python-c'importos;printos.environ["A"]'Traceback(mostrecentcalllast):File"",line1,inFile"/usr/lib/python2.7/UserDict.py",line23,in__getitem__raiseKeyError(key)KeyError:'A'但是PATH变量一切正常:$echo$PATH

python - os.getenv 和 os.environ 看不到我的 bash shell 的环境变量

我在ubuntu13.04,bash,python2.7.4解释器看不到我设置的变量。这是一个例子:$echo$A5$python-c'importos;printos.getenv("A")'None$python-c'importos;printos.environ["A"]'Traceback(mostrecentcalllast):File"",line1,inFile"/usr/lib/python2.7/UserDict.py",line23,in__getitem__raiseKeyError(key)KeyError:'A'但是PATH变量一切正常:$echo$PATH

python - 什么时候 os.environ ['foo' ] 不匹配 os.getenv ('foo' )?

我有一个小的Python应用程序,通过subprocess.Popen启动,它接受一些环境变量形式的参数。我通过将环境结构传递给Popen调用来做到这一点。然后程序通过os.getenv读取变量。或者更确切地说,它曾经以这种方式阅读它们。在Windows上,它运行良好。但是在我们的FreeBSD服务器上,os.getenv为我们传入的所有参数返回None。奇怪的是os.environ有值就好了——事实上,只需将所有os.getenv('foo')调用切换到os.environ['foo']就可以在两个平台。为什么这些值不同?什么时候比较合适? 最佳答案

python - 什么时候 os.environ ['foo' ] 不匹配 os.getenv ('foo' )?

我有一个小的Python应用程序,通过subprocess.Popen启动,它接受一些环境变量形式的参数。我通过将环境结构传递给Popen调用来做到这一点。然后程序通过os.getenv读取变量。或者更确切地说,它曾经以这种方式阅读它们。在Windows上,它运行良好。但是在我们的FreeBSD服务器上,os.getenv为我们传入的所有参数返回None。奇怪的是os.environ有值就好了——事实上,只需将所有os.getenv('foo')调用切换到os.environ['foo']就可以在两个平台。为什么这些值不同?什么时候比较合适? 最佳答案

python - 我应该使用类还是字典?

我有一个只包含字段而没有方法的类,如下所示:classRequest(object):def__init__(self,environ):self.environ=environself.request_method=environ.get('REQUEST_METHOD',None)self.url_scheme=environ.get('wsgi.url_scheme',None)self.request_uri=wsgiref.util.request_uri(environ)self.path=environ.get('PATH_INFO',None)#...这很容易被翻译成字

python - 我应该使用类还是字典?

我有一个只包含字段而没有方法的类,如下所示:classRequest(object):def__init__(self,environ):self.environ=environself.request_method=environ.get('REQUEST_METHOD',None)self.url_scheme=environ.get('wsgi.url_scheme',None)self.request_uri=wsgiref.util.request_uri(environ)self.path=environ.get('PATH_INFO',None)#...这很容易被翻译成字

python - 检查环境变量是否存在的好习惯是什么?

我想检查我的环境中是否存在Python中的变量,例如"FOO"。为此,我使用了os标准库。在阅读了图书馆的文档后,我想出了两种方法来实现我的目标:方法一:if"FOO"inos.environ:pass方法二:ifos.getenv("FOO")isnotNone:pass我想知道哪种方法(如果有的话)是一个好的/首选条件以及为什么。 最佳答案 使用第一个;它直接尝试检查是否在environ中定义了某些内容。尽管第二种形式同样有效,但它缺乏语义,因为如果它存在,您会返回一个值,并且仅使用它进行比较。您正在尝试查看是否存在某些东西in

python - 检查环境变量是否存在的好习惯是什么?

我想检查我的环境中是否存在Python中的变量,例如"FOO"。为此,我使用了os标准库。在阅读了图书馆的文档后,我想出了两种方法来实现我的目标:方法一:if"FOO"inos.environ:pass方法二:ifos.getenv("FOO")isnotNone:pass我想知道哪种方法(如果有的话)是一个好的/首选条件以及为什么。 最佳答案 使用第一个;它直接尝试检查是否在environ中定义了某些内容。尽管第二种形式同样有效,但它缺乏语义,因为如果它存在,您会返回一个值,并且仅使用它进行比较。您正在尝试查看是否存在某些东西in

python - os.getenv 和 os.environ.get 的区别

这两种方法有什么区别吗?>>>os.getenv('TERM')'xterm'>>>os.environ.get('TERM')'xterm'>>>os.getenv('FOOBAR',"notfound")=="notfound"True>>>os.environ.get('FOOBAR',"notfound")=="notfound"True它们似乎具有完全相同的功能。 最佳答案 见thisrelatedthread.基本上,os.environ是在导入时找到的,而os.getenv是os.environ.get的包装器,至少在