Reading files is straightforward: Python has built in support for reading and writing files. The function readlines() can be used to read the entire files contents.

There is more to it than this one function. The Python Data I/O Mega Pack covers reading and writing files, csv, json, Excel and working with a database.

SQL is the language you use to ask a database questions. If you want to get better at it, SQLCrab runs real queries in the browser, nothing to install.

Reading a file is one call. Which call you pick depends on whether you want the whole thing, line by line, or as one string.

Read file into list

We call the function method open to read the file, then we call the method readlines() to read all of the file contents into a variable. Finally we print out all file data.

Example read file:

 #!/usr/bin/env python

filename = "readme.txt"

with open(filename) as fn:
content = fn.readlines()

print(content)

Content will contain a list of all strings in the file.

python read file

If you print the variable content:

print(content)

you would see a list. Every item of the list contains one line. However, every line of the list contains the newline character \n.
To remove the newline characters from the list use:
content = [x.strip() for x in content]

Read file into string

If you want to read a file into a string variable, you can use a different method.
The code below reads the entire file data into a single string.

#!/usr/bin/env python

filename = "x.py"
contents = open(filename,'r').read()
print(contents)

The three ways

  • f.read() gives you the whole file as one string.
  • f.readlines() gives you a list with one string per line, newlines included.
  • for line in f: reads the file line by line, which is best for big files.
  • f.readline() reads a single line.

Use a with block so the file is closed for you:

with open('data.txt') as f:
    content = f.read()

To strip the newline characters, use f.read().splitlines() or [line.strip() for line in f].

For csv and json files you have a module for it, csv and json. Reading those with open and split is more work than it looks.

If you want to try this yourself, the exercises on PyChallenge turn the same idea into a few short problems with instant feedback.