ValueError: unsupported pickle protocol: 3, python2 pickle can not load the file dumped by python 3 pickle?

You should write the pickled data with a lower protocol number in Python 3. Python 3 introduced a new protocol with the number 3 (and uses it as default), so switch back to a value of 2 which can be read by Python 2. Check the protocolparameter in pickle.dump. Your resulting code will look like this. There is no protocolparameter in pickle.load because pickle can determine … Read more

UnicodeDecodeError: ‘charmap’ codec can’t decode byte X in position Y: character maps to

The file in question is not using the CP1252 encoding. It’s using another encoding. Which one you have to figure out yourself. Common ones are Latin-1 and UTF-8. Since 0x90 doesn’t actually mean anything in Latin-1, UTF-8 (where 0x90 is a continuation byte) is more likely. You specify the encoding when you open the file:

min() arg is an empty sequence

If you want to avoid this ValueError in general, you can set a default argument to min(), that will be returned in case of an empty list. See described here. Note that this only works in Python 3.4+