Python allows you to open a file, do operations on it, and automatically close it afterwards using with
.
>>> with open('/my_path/my_file.txt','r') as f: >>> file_data = f.read()
In the example above we open a file, perform the operations in the block below the with
statement (in this case read from the file) and afterwards Python closes it for us. No need to call
f.close()
In the previous code, the call to f.read()
had no arguments passed to it; it defaults to reading all the remainder of the file from its current position - the whole file. If you pass .read()
an integer argument, it will read up to that number of characters, output all of them, and keep the 'window' at that position ready to read on.
>>> with open(camelot.txt) as song: … print(song.read(2)) … print(song.read(8)) … print(song.read()) We 're the knights of the round table We dance whenever we're able
Conveniently, Python will loop over the lines of a file using the syntax for line in file
. I can use this to create a list of lines in the file. Because each line still has its newline character attached, I remove this using .strip()
.
>>> camelot_lines = [] >>> with open("camelot.txt") as f: ... for line in f: ... camelot_lines.append(line.strip()) ... >>> print(camelot_lines) ["We're the knights of the round table", "We dance whenever we're able"]