18.3. Reading the data

This section uses the same data file that we just saw. If you want to see all of the data click on the Show button below. Once it appears, you can hide it again by clicking on the Hide button.

If you clicked on the Show button you can tell that it is a lot of data. But we don’t actually know the number of lines of data in the file by looking at it. Since we don’t know the number of lines here, we won’t use a for loop to process it. We will use a while loop to keep reading the data until there isn’t any more (returns an empty string).

We can process it by opening the file containing the data, then reading each line in. As long as the line is not empty, we keep going doing a split and processing the data. (This data is separated by a : instead of a ,.)

In Python, we must open files before we can use them and close them when we are done with them. Opening a file returns a Python object that has predefined functions and procedures, just like the turtle objects we have seen before. Table 1 shows the functions and procedures that can be used to open and close files.

Method Name

Use

Explanation

open

open(filename,'r')

Open a file called filename and use it for reading. This will return a reference to a file object.

open

open(filename,'w')

Open a file called filename and use it for writing. This will also return a reference to a file object.

close

filename.close()

Closes the file after you are finished with it.

The code below will print out the pollution information for all the cities that start with "A". It will print the city, state on one line and the two pollution values for that city on another line. It stops looping when there aren’t any more lines to be read (when the returned line is an empty string).

The following program prints the pollution information for all cities that start with a D, but the code is mixed up. Drag the blocks of statements from the left column to the right column and put them in the right order. Then click on <i>Check Me</i> to see if you are right. You will be told if any of the lines are in the wrong order or have the wrong indention.

        # open the file for reading
inFile = open("uspoll.txt","r")

# read a line from the file
line = inFile.readline()
---
# while there is another line
while line:
---
    # split at the :
    v = line.split(":")

    # get the city
    city = v[0]
---
    # if city starts with an D print info
    if (city.find("D") == 0):
        print('City: ', city)
        print("Pollution values:",v[1],v[2])
---
    # read the next line
    line = inFile.readline()
---
# close the file
inFile.close()
        

There is actually a way of using a for loop to read in a file. We can read the whole thing into one giant list, and then use a for loop to process each line in the list.

Write code to that will read an input file uspoll.txt . It will print the city name and the pollution values for all cities that have a PM 10 pollution of 20 or more.

Show Comments

Note

Discuss topics in this section with classmates.

Show Comments
You have attempted of activities on this page