Where to locate existing standard encodings in python
Philip Semanchuk
philip at semanchuk.com
Tue Nov 11 13:19:00 EST 2008
On Nov 11, 2008, at 1:08 PM, News123 wrote:
> Hi Philip,
>
> Thanks for your answer:
> The fact, that a module 'encodings' exists was new to me.
We both learned something new today. =)
> encodings.aliases.aliases has however one problem.
> It helps to locate all encoding aliases, but it won't find entries for
> which no aliases exist:
Ooops, I hadn't thought about that.
> What gives me a list of quite some encodings on my host is the shell
> command
> ls /usr/lib/python2.5/encodings | sed -n 's/\.py$//p' | sort
> (soma false hits, bit this is fine for me purposes)
>
> I don't know if really all encodings are represented with a .py file
> and
> if all encodigns have to be in this directory, but it's a start.
>
>
> Using shell commands is not that pythonic:
>
> I could try to rewrite this in python by
> 1.) determine from which directory encodings was imported and
> then using the glob module to list all .py files located there.
Yes, I'd thought about this but I agree with you that it seems
unpythonic and fragile. Unfortunately I can't think of anything better
at this point.
Good luck
Philip
>
> Philip Semanchuk wrote:
>>
>> On Nov 11, 2008, at 9:10 AM, News123 wrote:
>>
>>> Hi Philip,
>>>
>>> Your answer touches exaclty one point, which I was slightly afraid
>>> of:
>>> - The list is not exhaustive
>>> - python versions might have implemented different codecs.
>>>
>>> This is why I wondered whether there's any way of querying python
>>> for a
>>> list of codecs it supports.
>>
>> Try this:
>> Python 2.5.1 (r251:54863, Nov 17 2007, 21:19:53)
>> [GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
>> Type "help", "copyright", "credits" or "license" for more
>> information.
>>>>> import encodings.aliases
>>>>>
>>>>> encodings.aliases.aliases
>>
>>
>> "aliases" in the encodings.aliases module is a dict mapping alias
>> names
>> (the dict keys) to encodings (the dict values). Thus, this will
>> give you
>> the list of supported encodings:
>>>>> set(encodings.aliases.aliases.values())
>>
>>
>> The encodings module isn't in the documentation (?!?); I found it
>> when
>> looking through the Python source code. For that reason I can't say
>> more
>> about how it works. You may want to experiment to see if encodings
>> added
>> via codecs.register() show up in the encodings.aliases.aliases dict.
>>
>>
>> Have fun
>> Philip
>>
>>
>>
>>>
>>> Philip Semanchuk wrote:
>>>>
>>>> On Nov 9, 2008, at 7:00 PM, News123 wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I was googling quite some time before finding the answer to my
>>>>> question:
>>>>> 'what are the names for the encodings supported by python?'
>>>>>
>>>>> I found the answer at http://python.active-venture.com/lib/node127.html
>>>>>
>>>>>
>>>>> Now my question:
>>>>>
>>>>> Can I find the same info in the standard python doc or query
>>>>> python
>>>>> with
>>>>> a certain command to print out all existing codings?
>>>>
>>>>
>>>> Look under the heading "Standard Encodings":
>>>> http://docs.python.org/library/codecs.html
>>>>
>>>> Note that both the page you found (which appears to be a copy of
>>>> the
>>>> Python documentation) and the reference I provide say, "Neither
>>>> the list
>>>> of aliases nor the list of languages is meant to be exhaustive".
>>>>
>>>> I guess one reason for this is that different Python
>>>> implementations
>>>> could choose to offer codecs for additional encodings.
>>> --
>>> http://mail.python.org/mailman/listinfo/python-list
>>
> --
> http://mail.python.org/mailman/listinfo/python-list
More information about the Python-list
mailing list