2024-05-15 02:11:03 发布
网友
如何在局部范围内重写环境变量?我知道如何用perl,但不知道python。在
在perl中:
if (1) { local $ENV{PATH} = "/usr/bin:/bin:/usr/sbin:/sbin"; print "$ENV{PATH}\n"; } print "$ENV{PATH}\n";
输出将是:
你知道在python中怎么做吗?在
好吧,一种方法是在作用域开始之前保存环境变量,并在它结束时检索它。但我想知道有没有更好的方法可以做到这一点。在
当前环境可通过标准库的操作系统模块进行映射。您可以在程序开始时设置此映射(字典)中的项。在
从操作系统模块文档:
在操作系统环境在
表示字符串环境的映射对象。例如,environ['HOME']是主目录的路径名(在某些平台上),它相当于C语言中的getenv(“HOME”)
使用python的with语句:
with
from sys import argv import os class MyPath(object): def __init__(self, newpath): self.newpath = newpath def __enter__(self): self.path = os.environ['PATH'] os.environ['PATH'] = self.newpath return self.newpath def __exit__(self, type, value, traceback): os.environ['PATH'] = self.path if __name__ == "__main__": if len(argv) < 2: print "usage: %s path" % (argv[0],) exit(1) print os.environ['PATH'] with MyPath(argv[1]) as newpath: print newpath print os.environ['PATH'] print os.environ['PATH']
python path.py whatever
产生:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games whatever whatever /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
当前环境可通过标准库的操作系统模块进行映射。您可以在程序开始时设置此映射(字典)中的项。在
从操作系统模块文档:
在操作系统环境在
表示字符串环境的映射对象。例如,environ['HOME']是主目录的路径名(在某些平台上),它相当于C语言中的getenv(“HOME”)
使用python的
with
语句:python path.py whatever
产生:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games whatever whatever /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
相关问题 更多 >
编程相关推荐