Read from file into parallel arrays            
        
		
			
			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
 
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
 
# 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])