python清除变量_如何清除Python中仅一个变量的os.environ值

若要仅为调用的脚本取消设置环境变量,也可以执行以下操作。os.unsetenv('PYTHONHOME')

更新:

如果必须为流的其余部分删除环境,则os.environ.pop('PYTHONHOME')或del os.environ['PYTHONHOME']更好。但是,如果您只想为在末尾分叉的脚本取消设置环境变量,那么os.unsetenv('PYTHONHOME')工作得更好,因为它仍然将环境变量保留在当前流程环境中。但是,它也将取决于如何调用脚本。

Python说Unset (delete) the environment variable named key. Such changes to the

environment affect subprocesses started with os.system(), popen() or

fork() and execv().

请参阅下面的示例。

示例脚本(/tmp/env.py)import os

print os.environ["VIFI"]

现在让我们看看下面的内容。vifi-a01:~ vifi$ python

Python 2.7.16 (default, Oct 16 2019, 00:34:56)

[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import os

>>> 'VIFI' in os.environ # EnvVar not present initially.

False

>>> os.environ['VIFI'] = 'V' # set the env var

>>> os.system('python /tmp/env.py') # child process/script gets it

V

0

>>> os.unsetenv('VIFI') # unset env only for child script

>>> os.system('python /tmp/env.py')

Traceback (most recent call last):

File "/tmp/env.py", line 2, in

print os.environ["VIFI"]

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py", line 40, in __getitem__

raise KeyError(key)

KeyError: 'VIFI'

256

>>> 'VIFI' in os.environ # rest of the flow still has it

True

>>> os.environ['VIFI'] = 'V' # set it again for child process/script

>>> os.system('python /tmp/env.py')

V

0

>>>

>>> os.environ["VIFI"] = "V"

>>> ^D

vifi-a01:~ vifi$ echo $VIFI

vifi-a01:~ vifi$ printenv | grep "VIFI"

vifi-a01:~ vifi$

顺便说一句,通过os.environ设置环境只对设置它的进程(及其子进程)是本地的。它对全局环境变量没有影响,正如您在最后看到的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值