Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #67822

Re: Decoding a process output

From Francis Moreau <francis.moro@gmail.com>
Subject Re: Decoding a process output
Date 2014-03-05 09:07 +0100
References <lf46bg$5qc$1@ger.gmane.org> <lf4tkk$76i$1@ger.gmane.org>
Newsgroups comp.lang.python
Message-ID <mailman.7799.1394006779.18130.python-list@python.org> (permalink)

Show all headers | View raw


On 03/04/2014 05:05 PM, Peter Otten wrote:
> Francis Moreau wrote:
> 
>> Hi,
>>
>> In my understanding (I'm relatively new to python), I need to decode any
>> bytes data provided, in my case, by a shell command (such as findmnt)
>> started by the subprocess module. The goal of my application is to parse
>> the command outputs.
>>
>> My application runs only on linux BTW and should run fine on both python
>> 2.7 and py3k.
>>
>> My question is when decoding the output bytes data of the external
>> command, which encoding should I use ?
>>
>> Should I guess the encoding by inspecting LANG or any LC_* environment
>> variables ?
>>
>> Should I force one of those environment variable to a specific value
>> before running my external command ?
>>
>> Thanks for any tips.
> 
> You can use locale.getpreferredencoding(), which seems to evaluate LANG:
> 
> $ python3 -c 'import locale; print(locale.getpreferredencoding())'
> UTF-8
> $ LANG= python3 -c 'import locale; print(locale.getpreferredencoding())'
> ANSI_X3.4-1968

Hmm I'm confused here: when unsetting or changing LANG, the encoding is
changed on the fly that makes me wonder which part of the linux system
encodes the command output. I don't think it's the latter, is the libc ?

Thanks

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: Decoding a process output Francis Moreau <francis.moro@gmail.com> - 2014-03-05 09:07 +0100

csiph-web