Method 1 (SQA)
- This method uses “arrays” of a set size and datatype.
- The file is explicitly opened and closed
- Program will crash if there are not enough data lines in the file
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | DATA_FILE = 'students.csv' NUMBER_OF_STUDENTS = 4 def read_data_from_file(): # create empty arrays names = [""] * NUMBER_OF_STUDENTS marks = [ 0 ] * NUMBER_OF_STUDENTS # open file for reading f = open (DATA_FILE, 'r' ) # read data for every student for student in range (NUMBER_OF_STUDENTS): # decode each line from file line = f.readline() line = line.strip( 'n' ) line = line.split( ',' ) # insert data into arrays names[student] = line[ 0 ] marks[student] = int (line[ 1 ]) # close data file f.close() return names, marks #MAIN PROGRAM names, marks = read_data_from_file() for student in range (NUMBER_OF_STUDENTS): print (names[student], marks[student]) |
Method 2 (Pythonic)
- This method appends data onto lists
- The file is closed automatically when the with loop completes
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # define filename as a constant DATA_FILE = 'students.csv' def read_data_from_file(): # create empty lists names = [] marks = [] # open file for reading with open (DATA_FILE, 'r' ) as f: # go through every line of data for line in f.readlines(): # decode the line line = line.strip( 'n' ) line = line.split( ',' ) # add data to lists names.append(line[ 0 ]) marks.append( int (line[ 1 ])) return names, marks #MAIN PROGRAM names, marks = read_data_from_file() for student in range ( len (names)): print (names[student], marks[student]) |