Problem writing some strings (UnicodeEncodeError)

Albert-Jan Roskam fomcl at yahoo.com
Sun Jan 12 11:19:10 EST 2014


--------------------------------------------
On Sun, 1/12/14, Paulo da Silva <p_s_d_a_s_i_l_v_a at netcabo.pt> wrote:

 Subject: Problem writing some strings (UnicodeEncodeError)
 To: python-list at python.org
 Date: Sunday, January 12, 2014, 4:36 PM
 
 Hi!
 
 I am using a python3 script to produce a bash script from
 lots of
 filenames got using os.walk.
 
 I have a template string for each bash command in which I
 replace a
 special string with the filename and then write the command
 to the bash
 script file.
 
 Something like this:
 
 shf=open(bashfilename,'w')
 filenames=getfilenames() # uses os.walk
 for fn in filenames:
     ...
     cmd=templ.replace("<fn>",fn)
     shf.write(cmd)
 
 For certain filenames I got a UnicodeEncodeError exception
 at
 shf.write(cmd)!
 I use utf-8 and have # -*- coding: utf-8 -*- in the source
 .py.
 
 How can I fix this?
 
 Thanks for any help/comments.
 

======> what is the output of locale.getpreferredencoding(False)? That is the default value of the "encoding" parameter of the open function.
 shf=open(bashfilename,'w', encoding='utf-8') might work, though on my Linux macine  locale.getpreferredencoding(False) returns utf-8.
help(open)
...
   In text mode, if encoding is not specified the encoding used is platform
    dependent: locale.getpreferredencoding(False) is called to get the
    current locale encoding. (For reading and writing raw bytes use binary
    mode and leave encoding unspecified.)
...





More information about the Python-list mailing list