2013-06-11 44 views
3

今天我遇到了一個Python中的問題,我必須解除很多與特定模式匹配的環境變量。現在我想知道這將是怎樣的pythonic方式。我在網上搜索了一個答案,但我找不到滿意的答案。未設置循環中的環境變量

UPDATE:

當我準備我自己找到了答案的例子。有沒有更好的方法來做到這一點?

import os 
import re 

regex = re.compile(r'^(env_var_)(.*?)$', re.IGNORECASE) 
for key in os.environ.keys(): 
    if regex.match(key): 
     del os.environ[key] 

謝謝你的幫忙!

+1

你的問題是比較容易理解,如果你要發佈您的代碼,告訴我們它的所作所爲,並告訴我們你想要它做的事。事實上,我無法設置環境變量,無論它們是否設置在循環中都會有所不同。 –

+0

你可以從'os.environ'鍵入'del'鍵。 –

+1

關於什麼是pythonic的話題,變量名稱(這裏是'Regex'和'Key')應該以小寫字母(分別是'regex'和'key')開頭。 – chepner

回答

2

你的模式似乎很簡單的使用正則表達式:

import os 

var_mask = "env_var_" 
for key in os.environ.keys(): 
    if key.lower().startswith(var_mask): 
     del os.environ[key] 
1

os.environ提供表示環境的映射。從中刪除(使用del語句)將修改環境。

+0

請注意,這取決於支持'os.unsetenv'功能的平臺。 – chepner

+0

是的。如果不是,Python不提供一種方法來取消設置環境變量。但它是由您實際使用的每個平臺提供的。 – Cairnarvon