2012-02-13 3 views
4

os.environを印刷すると、出力は辞書のように見えます。私がオンラインで読んだ記事の中には、メモリベースの辞書だと言うものがあります。 しかし、.viewkeys()メソッドをサポートしておらず、それは私に:_Environ instance does not support this methodを教えてくれます。正確なタイプはos.environです。試してみると:os.environのタイプは何ですか?なぜそれがビューキーメソッドをサポートしないのですか

print type(os.environ) 

私は答えとしてinstanceを取得します。

os.environのこの現象を明確にしてください。

+1

使用しているのPythonのバージョンは何? 'viewkeys()'メソッドは2.7の新機能です:http://docs.python.org/dev/whatsnew/2.7.html?highlight=viewkeys#pep-3106-dictionary-views –

+0

私はPython 2.7をWindows 7で使用しています – Sumod

答えて

5
>>> os.environ.__class__ 
<class os._Environ at 0xb7865e6c> 

UserDict.IterableUserDictのサブクラスです。

python 2.7では、ソースはos.pyにあり、line 413(Windows)とline 466(Posix)にあります。 Hereはpython 3.2ソースです。

4

それはos._Environインスタンスです:

>>> os.environ.__class__ 
<class os._Environ at 0x01DDA928> 

これは、Pythonのライブラリ、ファイルos.pyで定義されており、辞書の更新は、プロセスの環境を更新しなければならないので、無地の辞書にはできません。また、キー検索では、Windowsでは大文字と小文字を区別する必要があります。

Python 2.xでは、おそらく新しいviewkeys()メソッドを持たないUserDict.IterableUserDictというサブクラスがあります。 Python 3.xでは、MutableMapping abcを実装していますが、他の明示的な基本クラスはありません。

+0

+1 "は、辞書を更新するとプロセスの環境も更新する必要があるため、プレーンな辞書にすることはできません –

0

os.environはマッピングオブジェクトです。 dictはマッピングオブジェクトのタイプです& os.environdictではありません。意味がありますか?

0

はos.environは、クラスのインスタンスである

試してみてください。

os.environ.__dict__ 

それはあなたのすべてのそれの属性を与えるだろう。..

関連する問題