Reading and writing text data
When reading a text file, we already know we should open it in text mode, which is the default Python mode. In this mode, Python will try to decode the content of the file according to what locale.getpreferredencoding
returns as being the preferred encoding for our system.
Sadly, the fact that any type of encoding is the preferred encoding for our system has nothing to do with what encoding might have been used to save the contents of the file. As it might be a file that someone else wrote, or even if we write it ourselves, the editor might have saved it in any encoding.
So the only solution is to specify the encoding that should be used to decode the file.
How to do it...
The open
function that Python provides accepts an encoding
argument that can be used to properly encode/decode the contents of a file:
# Write a file with latin-1 encoding with open('/tmp/somefile.txt', mode='w', encoding='latin-1') as f: f.write('This is some latin1 text: "è già ora"') #...