设置/读取环境variables

可能重复:
如何在Python中设置环境variables

我的python脚本,它调用了许多python函数和shell脚本。 我想在Python中设置一个环境variables(主调用函数)和所有的subprocess,包括shell脚本来查看环境variables集。

我需要设置一些像这样的环境variables:

DEBUSSY 1 FSDB 1 

1是一个数字,而不是一个string。 另外,如何读取存储在环境variables中的值? (像另一个python子脚本中的DEBUSSY / FSDB一样)

尝试使用os模块。

 import os os.environ['DEBUSSY'] = '1' os.environ['FSDB'] = '1' # Open child processes via os.system(), popen() or fork() and execv() someVariable = int(os.environ['DEBUSSY']) 

请参阅os.environ上的Python文档 。 另外,为了产生subprocess,请参阅Python的subprocess文档 。

第一件事情第一:)读书是一个很好的解决问题的办法; 它是解决问题中的创可贴和长期投资之间的区别。 不要错过学习的机会。 :d

你可以select1解释为一个数字,但环境variables并不在意。 他们只是传递string:

  The argument envp is an array of character pointers to null- terminated strings. These strings shall constitute the environment for the new process image. The envp array is terminated by a null pointer. 

(来自environ(3posix)

您可以使用os.environ类似于字典的对象访问python中的环境variables:

 >>> import os >>> os.environ["HOME"] '/home/sarnold' >>> os.environ["PATH"] '/home/sarnold/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' >>> os.environ["PATH"] = os.environ["PATH"] + ":/silly/" >>> os.environ["PATH"] '/home/sarnold/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/silly/' 

如果你想把全局variables传递给新的脚本,你可以创build一个仅用于保存全局variables(例如globals.py)的python文件。 当你在子脚本的顶部导入这个文件时,它应该可以访问所有这些variables。

如果你正在写这些variables,那么这是一个不同的故事。 这涉及到并发和lockingvariables,除非你想要,否则我不会进入。

使用os.environ[str(DEBUSSY)]进行读写操作( http://docs.python.org/library/os.html#os.environ )。

至于阅读,当然你必须从string中parsing数字。