In working with files, particularly ones with a rich set of characters from multiple languages, you may encounter the topic of unicode, which is an ambitious idea of representing characters of all languages and many specialized expertise domains. The history of unicode and Python is not pretty, and the legacy of different ways to handle unicode is visible in different versions of the Python language.

For Python 2, there is a unicode how-to document explaining the ideas and what functions, methods and modules can be used to properly deal with unicode.

Similarly, Python 3 has a unicode how-to document.

The general advice to a beginner is to avoid spending much time on unicode: concentrate first on learning Python syntax with plain Ascii characters and avoid being overcome by all the unicode details.

One word of caution (should it happen to you) is that Python can have some difficulty when a non-Ascii character is present in the Python code of a program. The problem is that Python needs to know what kind of character encoding (especially if it is not Ascii) is found in the source code, so that Python will correctly parse (recognize syntax) the program. When it isn't all Ascii, there's a requirement to make the first like of a program a special comment, something like

# -*- coding: utf-8 -*-

(See PEP 0263 if you really want to see the details.) Again, try to avoid these situations if you are a beginner with Python.