EXCEPTION HANDLING IN PYTHON
• Errors are the problems in a program due to which the program will
stop the execution.
Two types of Error occurs in python.
• Syntax errors(parsing errors)
• Logical errors (Exceptions)
• An exception is an event, which occurs during the execution of a
program that disrupts the normal flow of the program's instructions. In
general, when a Python script encounters a situation that it cannot cope
with, it raises an exception. An exception is a Python object that
represents an error.
Page 1 of 25
Page 2 of 25
COMMON EXCEPTIONS:
• ZeroDivisionError: Occurs when a number is divided by zero.
• NameError: It occurs when a name is not found. It may be local
or global.
• IndentationError: If incorrect indentation is given.
• IOError: It occurs when Input Output operation fails.
• EOFError: It occurs when the end of the file is reached, and
yet operations are being performed.
Page 3 of 25
Page 4 of 25
EXAMPLE:
Page 5 of 25
RAISE AN EXCEPTION:
• As a Python developer you can choose to throw an exception if
a condition occurs.
• To throw (or raise) an exception, use the raise keyword.
• We can use raise to throw an exception if a condition occurs.
The statement can be complemented with a custom exception.
• x = -1
if x < 0:
raise Exception("Sorry, no numbers below zero")
• x = "hello"
if not type(x) is int:
raise TypeError("Only integers are allowed")
# Program to depict else clause with try-except
# Function which returns a/b
Page 6 of 25
def AbyB(a , b):
try:
c = ((a+b) / (a-b))
except ZeroDivisionError:
print "a/b result is 0"
else:
print c
# Driver program to test above function
AbyB(2.0, 3.0)
AbyB(3.0, 3.0)
OUTPUT:
-5.0
a/b result is 0
USER DEFINED EXCEPTION
• Programmers may name their own exceptions by creating a new
exception class. Exceptions need to be derived from the Exception class,
either directly or indirectly.
Page 7 of 25
ASSERTION IN PYTHON
• An Assertion in Python or a Python Assert Statement is one which
asserts (or tests the trueness of) a condition in your code. This is a
Boolean expression that confirms the Boolean output of a condition.
Where Assertion in Python used?
• In checking types/ in checking valid input.
• In checking values of arguments.
• Checking outputs of functions.
• As a debugger to halt where an error occurs.
• In testing code.
• In detecting abuse of an interface by another programmer.
Using assert without Error Message:
def avg(marks):
assert len(marks) != 0
return
sum(marks)/len(marks) mark1 = []
print("Average of mark1:",avg(mark1))
Page 8 of 25
Using assert with Error Message
LOGGING AN EXCEPTION
• Logging, in software applications, is a way to track events. Before we
can proceed, telling you more about it, we want to exemplify.
• To log an exception in Python we can use logging module and through
that we can log the error.
• Logging an exception in python with an error can be done in the
logging. exception() method. This function logs a message with level
ERROR on this logger. The arguments are interpreted as for debug().
Exception info is added to the logging message. This method should
only be called from an exception handler
PURPOSES OF LOGGING IN PYTHON
• Diagnostic Logging- To record events that revolve around the
application’s operation.
• Audit Logging- To record events for business analysis.
Page 9 of 25
• Logging module provides a set of functions for simple logging and
for following purposes
DEBUG
INFO
WARNING
ERROR
CRITICAL
PYTHON LOGGING FUNCTIONS
• logging.info() or logging.debug() for the detailed output of events
that occur during normal operation of a program.
• warnings.warn() issues a warning for a runtime event if the issue
is avoidable.
• logging.warning() issues a warning for a runtime event if we need to
note the event even when the client can do nothing about it.
• logging.error(), logging.exception(), or logging.critical() report
the suppression of an error without raising an exception.
# importing the module
import logging
try:
printf(“Hello")
except Exception as Argument:
logging.exception("Error occured while printing Hello")
ERROR:root:Error occured while printing GeeksforGeeks Traceback (most
recent call last): File "/home/gfg.py", line 3, in printf("GeeksforGeeks")
NameError: name 'printf' is not defined
We can also log the error message into different file without showing error in
the console by the following method:
Page 10 of 25
Logging Variable Data:
dynamic information from application in the logs.
import logging
name = 'John‘
logging.error('%s raised an error', name)
ERROR:root:John raised an error
Displaying Date/Time For Python Logging:
• logging.basicConfig(format=’%(asctime)s %(message)s’)
FILE IN PYTHON
• A file is a chunk of logically related data or information
which can be used by computer programs.
• Files on most modern file systems are composed of three
main parts:
• Header: metadata about the contents of the file (file
name, size, type, and so on)
• Data: contents of the file as written by the creator or editor
Page 11 of 25
• End of file (EOF): special character that indicates the end
of the file
In Python, there is no need for importing external library to read
and write files. Python provides an inbuilt function for
creating, writing, and reading files.
• Python has several functions for creating, reading,
updating, and deleting files.
• There are two types of files in
Python Binary file
Text file
Page 12 of 25
FILE open() function
The Python file open function returns a file object that contains methods and
attributes to perform various operations for opening files in Python.
file_object = open("filename", "mode")
Here,
filename: gives name of the file that the file object has opened.
mode: attribute of a file object tells you which mode a file was opened in.
Page 13 of 25
File Modes:
MODES DESCRIPTION
It opens a file in read-only mode while the file offset
<r>
stays at the root.
It opens a file in (binary + read-only) modes. And the
<rb>
offset remains at the root level.
It opens the file in both (read + write) modes while the
<r+>
file offset is again at the root level.
It opens the file in (read + write + binary) modes. The
<rb+>
file offset is again at the root level.
It allows write-level access to a file. If the file already
<w> exists, then it’ll get overwritten. It’ll create a new file if
the same doesn’t exist.
Use it to open a file for writing in binary format. Same
<wb>
behavior as for write-only mode.
It opens a file in both (read + write) modes. Same
<w+>
behavior as for write-only mode.
It opens a file in (read + write + binary) modes. Same
<wb+>
behavior as for write-only mode.
Page 14 of 25
It opens the file in append mode. The offset goes to the
<a> end of the file. If the file doesn’t exist, then it gets
created.
It opens a file in (append + binary) modes. Same
<ab>
behavior as for append mode.
It opens a file in (append + read) modes. Same
<a+>
behavior as for append mode.
It opens a file in (append + read + binary) modes. Same
<ab+>
behavior as for append mode.
Syntax:
• file_object = open(file_name,
mode) EG
• f = open("demofile.txt", "r")
Page 15 of 25
EXAMPLE:
# Python program to demonstrate File Concept
file1 = open('IIBSC_CS.txt', 'w')
L = [“20UCS BATCH \n", "JAVA-PYTHON-DS \n", "VB-EVS \n"]
s = "WELCOME\n"
# Writing a string to file
file1.write(s)
# Writing multiple strings at a time
file1.writelines(L)
# Closing file
file1.close()
file1 = open('IIBSC_CS.txt', 'r')
print(file1.read())
file1.close()
Page 16 of 25
APPEND
# Python program to illustrate # Append
# Append-adds at last
file1 = open("IIBSC_CS.txt", "a") # append
mode file1.write("STAND-ECC-NSS-FINE
ARTS \n")
file1.close()
file1 = open("IIBSC_CS.txt", "r")
print("Output after appending")
print(file1.read())
print()
file1.close()
Page 17 of 25
EXAMPLE:
Python program to count the number of lines in a text file
# Opening a file
file = open("IIBSC_CS.txt","r")
Counter = 0
# Reading from file
Content = file.read()
CoList = Content.split("\n")
for i in CoList:
if i:
Page 18 of 25
Counter += 1
print("Number of lines in the file IIBSC_CS.txt")
print(Counter)
EXAMPLE:
PROGRAM TO DISPLAY SUM OF DIGITS IN THE TEXT FILE
# Python program for writing to file
file = open('SUM.txt', 'w')
data ='HELLO123 SUPER345'
file.write(data)
file.close()
# Python program for reading from file
h = open('SUM.txt', 'r')
content = h.readlines()
a=0
for line in content:
for i in line:
if i.isdigit() == True:
a += int(i)
print("The sum of numbers in the file is:", a)
Page 19 of 25
EXAMPLE
Count the number of occurrence of the words in text file
file = open('COUNT.txt', 'w')
data ='IUG IIUG IIIUG IPG IIPG IIUG IIUG IIUG'
file.write(data)
file.close()
text = open("COUNT.txt", "r")
d = dict()
for line in text:
line = line.strip()
line = line.upper()
words = line.split(" ")
for word in words:
if word in d:
d[word] = d[word] + 1
else:
d[word] = 1
Page 20 of 25
for key in list(d.keys()):
print(key, ":", d[key])
FILE METHODS:
close() Closes the file
detach() Returns the separated raw stream from the buffer
fileno() Returns a number that represents the stream, from the
operating system's perspective
flush() Flushes the internal buffer
isatty() Returns whether the file stream is interactive or not
Page 21 of 25
read() Returns the file content
readable() Returns whether the file stream can be read or not
readline() Returns one line from the file
readlines() Returns a list of lines from the file
seek() Change the file position
seekable() Returns whether the file allows us to change the file
position
tell() Returns the current file position
truncate() Resizes the file to a specified size
writable() Returns whether the file can be written to or not
write() Writes the specified string to the file
writelines() Writes a list of strings to the file
Page 22 of 25
FILE:RANDOM ACCESS
FILE
The tell() method returns the current file position in a file stream.
file.tell()
f = open("demofile.txt", "r")
print(f.readline())
print(f.tell())
seek()
move the file pointer to another position. fileObject.seek(offset,from_what))
offset – A number of positions will move.
from_what – defines your point of reference. (Optional)
f = open("testFile.txt", "r")
f.seek(9)
print(f.readline())
Using the mmap module allows the user to randomly access locations in a file
by mapping the file into memory. This is an alternative to using normal file
operations.
import mmap
with open('filename.ext', 'r') as fd:
# 0: map the whole file
mm = mmap.mmap(fd.fileno(), 0)
# print characters at indices 5 through 10
print mm[5:10]
Page 23 of 25
# print the line starting from mm's current position
print mm.readline()
# write a character to the 5th index
mm[5] = 'a'
# return mm's position to the beginning of the file
mm.seek(0)
# close the mmap object
mm.close()
Zipping and Unzipping files in Python
ZIP is an archive file format that supports lossless data compression.
By lossless compression, it means that the
compression algorithm used allows the original data to be perfectly
reconstructed from the compressed data.
Also, a ZIP file may contain one or more files or directories that may
have been compressed.
Why do we need zip files?
To reduce storage requirements.
To improve transfer speed over standard connections.
# importing required modules
from zipfile import ZipFile
# specifying the zip file name
file_name = "my_python_files.zip"
# opening the zip file in READ mode
with ZipFile(file_name, 'r') as zip:
# printing all the contents of the zip file
zip.printdir()
Page 24 of 25
# extracting all the files
print('Extracting all the files now...')
zip.extractall()
print('Done!')
Unzipping the File
import zipfile
def un_zipFiles(path):
files=os.listdir(path)
for file in files:
if file.endswith('.zip'):
filePath=path+'/'+file
zip_file = zipfile.ZipFile(filePath)
for names in zip_file.namelist():
zip_file.extract(names,path)
zip_file.close()
Page 25 of 25