====== Reading a file ====== ===== Line by line ===== >>> for line in open("./dico.txt", "r"): ... print(line) ... ABACA~ ABACULE~ ABAISSABLE~ ABAISSAIENT~ ABAISSAIS~ . . . ===== Classic method ===== >>> a_file = None >>> try: ... a_file = open("./dico.txt", "r") ... text = a_file.read() ... except: ... print("Error") ... finally: ... if a_file != None: ... a_file.close() ... >>> >>> a_file <_io.TextIOWrapper name='./dico.txt' encoding='UTF-8'> >>> a_file.name './dico.txt' ===== The with statement ===== The better solution. No need to use **try: ... except: ...**.\\ Forget the previous method. >>> with open("./dico.txt", "r") as f: ... text = f.read() >>> >>> len(text) 2664170 >>> print(text) . . . ZYGOMORPHE~ ZYGOMYCETES~ ZYGOMYCETE~ ZYGOPETALE~ ZYGOTE~ ZYMASE~ ZYMOTECHNIE~ ZYMOTIQUE~ ZYTHON~ ZYTHUM~ Z~ This code calls open(), but it never calls a_file.close(). The with statement starts a code block, like an if statement or a for loop. Inside this code block, you can use the variable a_file as the stream object returned from the call to open(). All the regular stream object methods are available — seek(), read(), whatever you need. When the with block ends, Python calls a_file.close() automatically.