CMP 4266
Software Development UG1
Lecture – 10
(Based on Gaddis, T., Starting out with Python 3e, Pearson Education)
CMP4266, School of CS & CD, Birmingham City University.
Outline
Introduction to File
Writing Data to File
Reading Data From File
Exceptions Handling
CMP 4266, School of CS & CD, Birmingham City University.
Introduction to File Input and Output
For program to retain data between the times it is run, you
must save the data
– Data is saved to a file, typically on computer disk
– Saved data can be retrieved and used at a later time
Output file: a file that data is written to
Input file: a file from which data is read
Three steps when a program uses a file
– Open the file
– Process the file (reading/writing)
– Close the file
CMP 4266, School of CS & CD, Birmingham City University.
Writing Data to File
CMP 4266, School of CS & CD, Birmingham City University.
Reading Data From File
CMP 4266, School of CS & CD, Birmingham City University.
Types of Files and File Access Methods
In general, two types of files
– Text file: contains data that has been encoded as text
– Binary file: contains data that has not been converted to text. may
contain any type of data, encoded in binary form for computer storage
and processing purposes.
Two ways to access data stored in file
– Sequential access: file read sequentially from beginning to end, can’t
skip ahead
– Direct access: can jump directly to any piece of data in the file
CMP 4266, School of CS & CD, Birmingham City University.
Filenames and File Objects
Filename extensions: short sequences of characters that appear at the end
of a filename preceded by a period
– Extension indicates type of data stored in the file
File object: object associated with a specific file
– Provides a way for a program to work with the file: file object referenced
by a variable
CMP 4266, School of CS & CD, Birmingham City University.
Opening a File in Python
open function: used to open a file
– Creates a file object and associates it with a file on the disk
– General format:
file_variable = open(filename, mode)
Mode: string specifying how the file will be opened
– reading only ('r'), writing ('w'), and appending ('a')
– Example, customer_file = open(“customer.txt”, “r”)
If open function receives a filename that does not contain a path, assumes
that file is in same directory as program
Can specify alternative path and file name in the open function argument.
Prefix the path string literal with the letter r
– Example test_file = open(r'C:\Users\Blake\temp\test.txt', 'w')
CMP 4266, School of CS & CD, Birmingham City University.
Writing to a File
File object’s write method used to write data to the file
– Format: file_variable.write(string)
File should be closed using file object close method
– Format: file_variable.close()
Example
CMP 4266, School of CS & CD, Birmingham City University.
Reading Data from a File
read method: file object method that reads entire file contents into
memory
– Only works if file has been opened for reading
– Contents returned as a string,
– Format: content = file_variable.read()
readline method: file object method that reads a line from the file
– Line returned as a string, including '\n‘
– Format: line = file_variable.readline()
CMP 4266, School of CS & CD, Birmingham City University.
Reading Data from a File (Example)
CMP 4266, School of CS & CD, Birmingham City University.
Using Loops to Process Files
Files typically
used to hold
large amounts
of data and
Often the
number of
items stored in
file is
unknown.
Loop typically
involved in
reading from
and writing to
a file
CMP 4266, School of CS & CD, Birmingham City University.
Using Loops to Process Files
Loop typically involved in reading from and writing to a file
The readline method uses an empty string as a sentinel when end of file
is reached
- Can write a while loop with the condition
while line != ''
Example
file = open(“MyFile.txt", "r")
line = file.readline()
while line !='':
print(line)
line = file.readline()
file.close()
CMP 4266, School of CS & CD, Birmingham City University.
Appending Data to an Existing File
When open file with 'w' mode, if the file already exists it is
overwritten
To append data to a file use the 'a' mode
– If file exists, it is not erased, and if it does not exist it is created
– Data is written to the file at the end of the current contents
Writing and Reading Numeric Data
– Numbers must be converted to strings before they are written to a file.
str function: converts value to string
– Number are read from a text file as strings
- Must be converted to numeric type in order to perform mathematical
operations. Use int and float functions to convert string to
numeric value
CMP 4266, School of CS & CD, Birmingham City University.
The split function
Readline function returns a String of words
At some point, you may need to break a large string down into
smaller chunks, or strings.
x = "blue,red,green"
colours = x.split(",")
print(colours)
words = "This is random text we’re going to split apart"
words2 = words.split(" ")
print(words2)
CMP 4266, School of CS & CD, Birmingham City University.
Split into Objects?
class Employee:
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.salary = salary
def get_employee_info(self):
print( "Employee name is: %s" %self.name)
print("Employee age is: %d" %self.age)
print("Employee salary: is %f" %self.salary)
employee_1 = "Julian, 45, 35000.00"
employee_2 = "Sarah Smith, 22, 26000.00" This can come from the function file.readline()
emp1_lst = employee_1.split(",")
emp2_lst = employee_2.split(",")
emp1_obj = Employee(emp1_lst[0], int(emp1_lst[1]), float(emp1_lst[2]))
emp2_obj = Employee(emp2_lst[0], int(emp2_lst[1]), float(emp2_lst[2]))
emp1_obj.get_employee_info()
print() # new line
emp2_obj.get_employee_info()
CMP 4266, School of CS & CD, Birmingham City University.
Exercise 10.1 – Read from files (25 minutes)
In-class
Exercise
Download the text file what_is_python.zip from Moodle under
Section “Week 10”, and then unzip the file.
Use python code to read data from the text “what_is_python.txt”
Use a While loop and the readline() function to read all lines in
the file.
Use the print function to print the lines on the Python idle shell.
Using Python code, calculate how many times the word
“Python” appeared in the file.
CMP4266 , School of CS & DT, Birmingham City University.
Exceptions
Exception: error that occurs while a program is running
– Usually causes program to abruptly halt
Traceback: error message that gives information regarding line
numbers that caused the exception
– Indicates the type of exception and brief description of the error that
caused exception to be raised
Example:
def read_number():
num = int("eleven")
read_number()
Traceback (most recent call last):
File "C:\......\Lecture_5.py", line 3, in <module>
read_number()
File "C:\......\Lecture_5.py", line 2, in read_number
num = int("eleven")
ValueError: invalid literal for int() with base 10: 'eleven'
CMP 4266, School of CS & CD, Birmingham City University.
Exception Avoiding
Many exceptions can be prevented by careful coding
– Example: input validation
– Usually involve a simple decision construct
– Example:
if N > 0:
math.sqrt(N)
Some exceptions cannot be avoided by careful coding
– Examples
- Trying to convert non-numeric string to an integer
- Trying to open for reading a file that doesn’t exist
CMP 4266, School of CS & CD, Birmingham City University.
Exception Handling
Exception handler: code that responds when exceptions are
raised and prevents program from crashing
– In Python, written as try/except statement
- General format:
try:
statements
except exceptionName:
statements
- Try suite: statements that can potentially raise an exception
- Handler: statements contained in except block
CMP 4266, School of CS & CD, Birmingham City University.
Exception Handling (Example)
CMP 4266, School of CS & CD, Birmingham City University.
Handling Multiple Exceptions
Often code in try suite can throw more than one type of exception. Need to
write except clause for each type of exception that needs to be handled
>>> >>>
Enter Number 1 : 12 Enter Number 1 : 12
Enter Number 2 : two Enter Number 2 : 0
Traceback (most recent call last): Traceback (most recent call last):
.. .. .. .. ... .. .. .. .. .. ..
... .. .. .. .. .. .. .. ..
ValueError: invalid literal . .. ...... ZeroDivisionError: division by zero
CMP 4266, School of CS & CD, Birmingham City University.
Handling Multiple Exceptions
Often code in try suite can throw more than one type of exception. Need to
write except clause for each type of exception that needs to be handled
>>>
Enter Number 1 : 12
Enter Number 2 : 0
Divisor can not be zero
CMP 4266, School of CS & CD, Birmingham City University.
Handling Multiple Exceptions
An except clause that does not list a specific exception will handle any
exception that is raised in the try suite
>>> >>>
Enter Number 1 : 12 Enter Number 1 : 10
Enter Number 2 : two Enter Number 2 : 0
Invalid input, please check your input Invalid input, please check your input
CMP 4266, School of CS & CD, Birmingham City University.
Displaying an Exception’s Default Error Message
Exception object: object created in memory when an exception is thrown
– Usually contains default error message pertaining to the exception
– Can assign the exception object to a variable in an except clause
– Can pass exception object variable to print function to display the
default error message
– Example
def main():
total = 0
try:
infile = open('sales_data.txt', 'r')
string = infile.readline()
except FileNotFoundError as exp:
print(exp)
CMP 4266, School of CS & CD, Birmingham City University.
The else Clause
try/except statement may include an optional else clause,
which appears after all the except clauses
– Aligned with try and except clauses
– Syntax similar to else clause in decision structure
– Else suite: block of statements executed after statements in try suite,
only if no exceptions were raised
- If exception was raised, the else suite is skipped
try:
statements
except exceptionName:
statements
else:
statements
CMP 4266, School of CS & CD, Birmingham City University.
Example try-except-else
CMP 4266, School of CS & CD, Birmingham City University.
The finally Clause
try/except statement may include an optional finally
clause, which appears after all the except clauses
– Aligned with try and except clauses
– Finally suite: block of statements after the finally clause
- Execute whether an exception occurs or not
- Purpose is to perform cleanup before exiting
– Format
try:
statements
except exceptionName:
statements
else:
statements
finally:
statements
CMP 4266, School of CS & CD, Birmingham City University.
Exercise 10.2 – Handling Multiple Exceptions
(25 minutes)
In-class
Exercise
Download and unzip the python file exercise_10.2.rar from
Moodle under Section “Week 10”
The unzipped file calculator_10.2.py makes a simple calculator
that can add, subtract, multiply and divide using functions.
The programme consists of an infinite while loop that keeps
asking the user for the required mathematical operation and
two operands num1 and num2 on which an operation is to be
performed.
Use exception handling to avoid the common exceptions
ValueError and ZeroDivisionError
If exception is handled appropriately, the programme should
redisplay the operations menu for the user to select a new
operation on two new values.
CMP4266 , School of CS & DT, Birmingham City University.