[Tutor] os.environ weirdness

Poor Yorick gp@pooryorick.com
Tue Dec 10 14:16:14 2002


No, I didn't tinker around with os.environ.  I see this behavior on both 
of my windows 2000 computers.  Can anyone else reproduce this?

Poor Yorick
gp@pooryorick.com

Gregor Lingl wrote:

> Poor Yorick schrieb:
>
>> Another phenomenon I haven't made sense of:
>>
>> >>> for i in os.environ:
>>    print i
>>
>>   Traceback (most recent call last):
>>  File "<pyshell#13>", line 1, in ?
>>    for i in os.environ:
>>  File "C:\Python22\lib\os.py", line 387, in __getitem__
>>    return self.data[key.upper()]
>> AttributeError: 'int' object has no attribute 'upper'
>
>
> For me this works (although it's not a subclassed dict, but
> a subclassed IterableUserDict, which also implements __iter__(),
> as a look at os.py shows.):
>
> >>> import os
> >>> for i in os.environ:
>    print i,
>
>   TMP USERNAME COMPUTERNAME LOGONSERVER COMSPEC USERDOMAIN HOME 
> TFLIBDIR TCL_LIBRARY COMMONPROGRAMFILES PROCESSOR_IDENTIFIER 
> PROGRAMFILES PROCESSOR_REVISION PATHEXT SYSTEMROOT PATH APPDATA TEMP 
> HOMEDRIVE SYSTEMDRIVE PROCESSOR_ARCHITECTURE NUMBER_OF_PROCESSORS 
> ALLUSERSPROFILE PROCESSOR_LEVEL TK_LIBRARY HOMEPATH OS2LIBPATH 
> USERPROFILE OS WINDIR
> >>>
>
> Your errormessage shows, that there is a key in your os.environ, which 
> is an 'int',
> whereas it is assumed. that all keys are of type string. so they have 
> a method upper.
> Did you tinker around with os.eviron?
>
> Regards, Gregor
>
>
>>
>> I realize that os.environ is not a builtin dictionary, but some sort 
>> of subclassed dictionary, but these commands work:
>>
>> os.environ.keys()
>> os.environ.items()
>>
>> doesn't the "in" statement just resolve to one of those functions?
>>
>> Regards,
>>
>> Poor Yorick
>> gp@pooryorick.com
>>
>>
>> _______________________________________________
>> Tutor maillist  -  Tutor@python.org
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>
>
>
>
>
>
>