在Python中读写环境变量?

Reading and writing environment variables in Python?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to set environmental variables in Python

我的python脚本调用了许多python函数和shell脚本。我想在python(主调用函数)中设置一个环境变量,以及包括shell脚本在内的所有子进程,以查看环境变量集。

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

1
2
DEBUSSY 1
FSDB 1

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


尝试使用os模块。

1
2
3
4
5
6
7
8
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文档。另外,有关生成子进程的信息,请参见Python的子进程文档。


首先要做的是:)读书是解决问题的好方法;它是创可贴修复和解决问题的长期投资之间的区别。永远不要错过学习的机会。D

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

1
2
3
4
   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中的环境变量:

1
2
3
4
5
6
7
8
>>> 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/'


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

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


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

至于阅读,当然您必须自己从字符串中分析数字。