在 Python 中读写环境变量?

我的 python 脚本调用了许多 python 函数和 shell 脚本。我想用 Python (main call function)和所有子进程(包括 shell 脚本)设置一个环境变量,以查看环境变量 set。

我需要像这样设置一些环境变量:

DEBUSSY 1
FSDB 1

1是一个数字,不是字符串。此外,我如何读取储存在环境变量内的值?(类似于另一个 python 子脚本中的 DEBUSSY/FSDB。)

405040 次浏览

尝试使用 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上的 巨蟒文件

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

至于读取,当然你必须自己解析字符串中的数字。

首先:)阅读书籍是解决问题的 好极了方法; 它是解决问题的创可贴和长期投资的区别。永远不要错过学习的机会。校对: D

您可以使用 选吧1解释为一个数字,但是环境变量并不关心这个,它们只是传递字符串:

   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))

您可以使用 类字典对象访问 python 中的环境变量:

>>> 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/'

如果您想要将全局变量传递到新的脚本中,您可以创建一个仅用于保存全局变量的 python 文件(例如 globals.py)。当您在子脚本的顶部导入这个文件时,它应该可以访问所有这些变量。

如果你写的是这些变量,那就另当别论了。这涉及到并发和锁定变量,除非你愿意,否则我不会谈这个。