If a message is there, but you cannot see it, is it really there?
Coding style looks good except for one thing. You are using a conditional expression where an if statement would do.

encode_and_print_file() if 'en' in choice.lower() \
                        else decode_and_print_file()


As the value of the expression is not used, I would prefer the statement version as it is clearer:

if 'en' in choice.lower():
    encode_and_print_file()
else:
    decode_and_print_file()

I don't see why you use if 'en' in choice.lower() to recognize the word "encode", allowing "en" anywhere. if choice.strip().lower().startswith('en') would be more to the point.