我的Python腳本,它調用許多Python函數和shell腳本。我想在Python中設置一個環境變量(主調用函數)和包括shell腳本在內的所有子進程來查看環境變量集。
我需要設置一些環境變量是這樣的:
DEBUSSY 1
FSDB 1
1
是一個數字,而不是字符串。另外,如何讀取存儲在環境變量中的值? (在另一個python子腳本中與DEBUSSY
/FSDB
相似。)
我的Python腳本,它調用許多Python函數和shell腳本。我想在Python中設置一個環境變量(主調用函數)和包括shell腳本在內的所有子進程來查看環境變量集。
我需要設置一些環境變量是這樣的:
DEBUSSY 1
FSDB 1
1
是一個數字,而不是字符串。另外,如何讀取存儲在環境變量中的值? (在另一個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 docs。另外,爲了產生子進程,請參閱Python的subprocess docs。
使用os.environ[str(DEBUSSY)]
進行讀寫操作(http://docs.python.org/library/os.html#os.environ)。
至於閱讀,當然你必須從字符串中解析數字。
第一件事第一:)看書是優秀解決問題的辦法;它是解決問題中的創可貼修復和長期投資之間的區別。不要錯過學習的機會。 :D
您可能會選擇來將1
解釋爲數字,但環境變量並不在意。他們只是傳遞字串:(從environ(3posix)
)使用
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.
在Python
您訪問環境變量os.environ
dictionary-like object:
>>> 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書籍,以獲得關於Python編程的豐富知識 – user749632 2011-05-12 01:35:03
如果你想傳遞的全局變量到新的腳本,你可以創建一個僅用於保存全局變量的python文件(例如globals.py)。當您在子腳本的頂部導入此文件時,它應該可以訪問所有這些變量。
如果你正在寫這些變量,那麼這是一個不同的故事。這涉及併發性和鎖定變量,除非你想要,否則我不會介入。
什麼是「DEBUSSY」的東西?它也在複製線程中。谷歌只是提供一些法國人的信息。 – voithos 2011-05-11 23:41:07
@voithos恥辱你! – 2011-05-11 23:50:30
@大衛什麼?好的,所以我的「法國人」評論毫無意義,是的,但我仍然想知道這件事情是什麼。 – voithos 2011-05-11 23:53:36