File Handling
File Handling
th
Class: 12 - A
Roll no.: 34
Subject: Computer Science
1
Certificate
This is to certify that Ritik Mohanty of Class 12 has successfully
completed the project on the topic file handling of computer
science during academic session 2023-24.
Subject Teacher
Shahid Khan
2
Acknowledgment
2. File object 11 – 24
Attributes
3. Binary file 25 - 36
4
File Handling
A file is a sequence of bytes on the disk/permanent storage where a group
of related data is stored. File is created for permanent storage of data.
In programming, Sometimes, it is not enough to only display the data on the
console. Those data are to be retrieved later on,then the concept of file
handling comes. It is impossible to recover the programmatically generated
data again and again. However, if we need to do so, we may store it onto
the file system which is not volatile and can be accessed every time. Here,
comes the need of file handling in Python.
File handling in Python enables us to create, update, read, and delete the
files stored on the file system through our python program. The following
operations can be performed on a file.
In Python, File Handling consists of following three steps:
Open the file.
Process file i.e perform read or write operation.
Close the file.
5
File Handling
Types of File
There are two types of files:
Text Files- A file whose contents can be viewed using a text editor is called a text file. A text
file is simply a sequence of ASCII or Unicode characters. Python programs, contents written
in text editors are some of the example of text files.e.g. .txt,.rtf,.csv etc.
Binary Files-A binary file stores the data in the same way as as stored in the memory. The
.exe files,mp3 file, image files, word documents are some of the examples of binary files.we
can’t read a binary file using a text editor.e.g. .bmp,.cdr etc.
Text File Binary File
Its Bits represent character. Its Bits represent a custom data.
Less prone to get corrupt as change reflects as Can easily get corrupted, corrupt on even single
soon as made and can be undone. bit change
Can store different types of data (audio,
Store only plain text in a file.
text,image) in a single file.
Widely used file format and can be opened in any Developed for an application and can be opened
text editor. in that application only.
Mostly .txt,.rtf are used as extensions to text files. Can have any application defined extension.
6
File Handling
Opening and Closing Files-
To perform file operation ,it must be opened first then after reading
,writing, editing operation can be performed. To create any new file
then too it must be opened. On opening of any file ,a file relevant
structure is created in memory as well as memory space is created to
store contents.
Once we are done working with the file, we should close the file.
Closing a file releases valuable system resources. In case we forgot to
close the file, Python automatically close the file when program ends
or file object is no longer referenced in the program. However, if our
program is large and we are reading or writing multiple files that can
take significant amount of resource on the system. If we keep opening
new files carelessly, we could run out of resources. So be a good
programmer , close the file as soon as all task are done with it.
7
File Handling
open Function-
Before any reading or writing operation of any file,it must be
opened first
of all.Python provide built in function open() for it.On calling of
this function creates file object for file operations.
Syntax
file object = open(<file_name>, <access_mode>,< buffering>)
file_name = name of the file ,enclosed in double quotes.
access_mode= Determines the what kind of operations can be
performed with file,like read,write etc.
Buffering = for no buffering set it to 0.for line buffering set it to
1.if it is greater than 1 ,then it is buffer size.if it is negative then
buffer size is system default.
8
File Handling
File opening modes-
Sr. Mode & Description
No.
1 r - reading only.Sets file pointer at beginning of the file . This is the default mode.
2 rb – same as r mode but with binary file
3 r+ - both reading and writing. The file pointer placed at the beginning of the file.
4 rb+ - same as r+ mode but with binary file
5 w - writing only. Overwrites the file if the file exists. If not, creates a new file for writing.
6 wb – same as w mode but with binary file.
7 w+ - both writing and reading. Overwrites . If no file exist, creates a new file for R & W.
8 wb+ - same as w+ mode but with binary file.
9 a -for appending. Move file pointer at end of the file.Creates new file for writing,if not exist.
10 ab – same as a but with binary file.
11 a+ - for both appending and reading. Move file pointer at end. If the file does not exist, it creates a new
file for reading and writing.
12 ab+ - same as a+ mode but with binary mode.
9
File Handling
Basic Text file operations
10
File Handling
Methods of os module
Before Starting file operation following methods must be learn by a
programmer to perform file system related methods available in os
module(standard module) which can be used during file operations.
1. The rename() method used to rename the file. e.g.program
Syntax os.rename(current_file_name, new_file_name) import os
2. The remove() method to delete file. print(os.getcwd())
Syntax os.remove(file_name) os.mkdir("newdir")
3. The mkdir() method of the os module to create os.chdir("newdir")
directories in the current directory. print(os.getcwd())
Syntax os.mkdir("newdir")
4. The chdir() method to change the current
directory. Syntax os.chdir("newdir")
5. The getcwd() method displays the current directory.
Syntax os.getcwd()
6. The rmdir() method deletes the directory.
Syntax os.rmdir('dirname')
11
File Handling
Absolute Path vs Relative Path
One must be familiar with absolute & relative path before starting file related operations.
The absolute path is the full path to some place on your computer. The relative path is the path
to some file with respect to your current working directory (PWD). For example:
Absolute path: C:/users/admin/docs/staff.txt
If PWD is C:/users/admin/, then the relative path to staff.txt would be: docs/staff.txt
Note, PWD + relative path = absolute path.
Cool, awesome. Now, if we write some scripts which check if a file exists.
os.chdir("C:/users/admin/docs")
os.path.exists("staff.txt") e.g.program
This returns TRUE if stuff.txt exists and it works. import os
Now, instead if we write, print(os.getcwd())
os.path.exists("C:/users/admin/docs/staff.txt") os.mkdir("newdir1")
This will returns TRUE. os.chdir("newdir1")
If we don't know where the user executing print(os.getcwd())
the script from, it is best to compute the absolute my_absolute_dirpath =
path on the user's system using os and file . os.path.abspath(os.path.dirname( file ))
file is a global variable set on every Python print(my_absolute_dirpath)
script that returns the relative path to the *.py
file that contains it.
12
File Handling
File object attributes /
1. open a text file
closed: It returns true if the file is closed and false when the file is open.
encoding: Encoding used for byte string conversion.
mode: Returns file opening mode
name: Returns the name of the file which file object holds.
newlines: Returns “\r”, “\n”, “\r\n”, None or a tuple containing all the newline
types seen.
E.g. Program
f = open("a.txt", #1 open text file
'a+') print(f.closed)
print(f.encoding)
print(f.mode)
print(f.newlines)
print(f.name)
OUTPUT
False
cp1252
a+
None
a.txt
13
File Handling
2. Close a text file
close(): Used to close an open file. After using this method,an opened
file will be closed and a closed file cannot be read or written any more.
E.g. program
f = open("a.txt", 'a+')
print(f.closed)
print("Name of the file is",f.name)
f.close() #2 close text file
print(f.closed)
OUTPUT
False
Name of the file is
a.txt True
14
File Handling
f = open("a.txt", 'r')
text = f.read()
print(text)
f.close()
OUTPUT
Welcome to python.mykvs.in
Regularly visit python.mykvs.in
Note : for text file operation file extension should be .txt and opening mode
without ‘b’ & text file handling relevant methods should be used for 16
operations. file
File Handling
Read Text file
readline([size]) method: Read no of characters from file if size is mentioned till
eof.read line till new line character.returns empty string on EOF.
e.g. program
f = open("a.txt", 'w')
line1 = 'Welcome to python.mykvs.in'
f.write(line1)
line2="\nRegularly visit python.mykvs.in"
f.write(line2)
f.close()
f = open("a.txt",
'r') text =
f.readline()
print(text)
text =
f.readline()
print(text)
f.close()
OUTPUT
Welcome to python.mykvs.in
Regularly visit python.mykvs.in
17
File Handling
Read Text file
readlines([size]) method: Read no of lines from file if size is mentioned or all
contents if size is not mentioned.
e.g.program
f = open("a.txt", 'w')
line1 = 'Welcome to python.mykvs.in'
f.write(line1)
line2="\nRegularly visit python.mykvs.in"
f.write(line2)
f.close()
f = open("a.txt", 'r')
text =
f.readlines(1)
print(text)
f.close()
OUTPUT
['Welcome to python.mykvs.in\n']
NOTE – READ ONLY ONE LINE IN ABOVE
PROGRAM. 18
File Handling
Read a Text File
Iterating over lines in a file
e.g.program
f = open("a.txt", 'w')
line1 = 'Welcome to python.mykvs.in'
f.write(line1)
line2="\nRegularly visit
python.mykvs.in" f.write(line2)
f.close()
f = open("a.txt", 'r')
for text in f.readlines():
print(text)
f.close()
19
File Handling
Read a Text file
Processing Every Word in a
f = open("a.txt", 'w') File
line1 = 'Welcome to python.mykvs.in'
f.write(line1)
line2="\nRegularly visit python.mykvs.in"
f.write(line2)
f.close()
f = open("a.txt", 'r')
for text in f.readlines():
for word in text.split( ):
print(word)
f.close()
OUTPUT
Welcome
to
python.mykvs.in
Regularly
visit
python.mykvs.in
20
File Handling
Getting & Resetting the Files Position
The tell() method of python tells us the current position within the file,where as The seek(offset[,
from]) method changes the current file position. If from is 0, the beginning of the file to seek. If it is set
to 1, the current position is used . If it is set to 2 then the end of the file would be taken as seek
position. The offset argument indicates the number of bytes to be moved.
e.g.program
f = open("a.txt", 'w')
line = 'Welcome to python.mykvs.in\nRegularly visit OUTPUT
python.mykvs.in' f.write(line) 0
f.close()
b'Welcome'
f = open("a.txt", 'rb+') 7
print(f.tell()) b' to python.mykvs.in\r\
print(f.read(7)) # read seven characters nRe gularly visit
print(f.tell())
print(f.read()) python.mykvs.in'
print(f.tell()) 59
f.seek(9,0) # moves to 9 position from begining b'o pyt'
print(f.read(5))
f.seek(4, 1) # moves to 4 position from current location
b'mykvs'
print(f.read(5)) b'vs.in'
f.seek(-5, 2) # Go to the 5th byte before the end
print(f.read(5))
f.close()
21
File Handling
4. Modify a Text file
There is no way to insert into the middle of a file without re-
writing it. We can append to a file or overwrite part of it using seek
but if we want to add text at the beginning or the middle, we'll
have to rewrite it.
It is an operating system task, not a Python task. It is the same in
all languages.
What we usually do for modification is read from the file, make the
modifications and write it out to a new file called temp.txt or
something like that. This is better than reading the whole file into
memory because the file may be too large for that. Once the
temporary file is completed, rename it the same as the original file.
This is a good, safe way to do it because if the file write crashes or
aborts for any reason in between, we still have our untouched
original file.
22
File Handling
Modify a Text file
Replace string in the same File
fin = open("dummy.txt", "rt")
data = fin.read()
data = data.replace(‘my', ‘your')
fin.close()
f = open("a.txt", 'a+') O
D
E
f.write("\nthanks")
f.close()
f = open("a.txt", 'r')
text = f.read()
print(text)
f.close()
OUTPUT
Welcome to python.mykvs.in
Regularly visit python.mykvs.in
thanks
25
File Handling
Standard input, output,
and error streams in python
Most programs make output to "standard out“,input from "standard
in“, and error messages go to standard error).standard output is to
monitor and standard input is from keyboard.
e.g.program
import sys
a = sys.stdin.readline()
sys.stdout.write(a)
a = sys.stdin.read(5)#entered 10 characters.a contains 5
characters. #The remaining characters are waiting to be read.
sys.stdout.write(a)
b = sys.stdin.read(5)
sys.stdout.write(b) sys.stderr.write("\
ncustom error message")
26
File Handling
Write and read a Binary file
#e.g. program binary_file=open("D:\\
binary_file.dat",mode="wb+") text="Hello 123"
encoded=text.encode("utf-8")
binary_file.write(encoded)
binary_file.seek(0)
binary_data=binary_file.read()
print("binary:",binary_data)
text=binary_data.decode("utf-8")
print("Decoded data:",text)
Note :- Opening and closing of binary file is same as text file opening and closing.While
opening any binary file we have to specify ‘b’ in file opening mode.
In above program binary_file.dat is opened in wb+ mode so that after writing ,reading
operation can be done on binary file.String variable text hold text to be encoded before
writing with the help of encode method().utf-8 is encoding scheme.after writing text ,we
again set reading pointer at beginning with the help of seek() method.then read the text
from file and decode it with the help of decode() method then display the text.
27
File
Handling Binary file
Operation using
pickle module
The problem with the approach of previous slide comes from the
fact that it is not very easy to use when we want to write several
objects into the binary file. For instance, consider what we would
have to do if we wished to write string, integer and perhaps even
the contents of a list or dictionary into the file. How would we read
the contents of this file later? This is not a trivial task, especially if
some of the objects can have variable lengths.
Fortunately, Python has a module which does this work for us and
is extremely easy to use. This module is called pickle; it provides us
with the ability to serialize and deserialize objects, i.e., to convert
objects into bitstreams which can be stored into files and later be
used to reconstruct the original objects. 28
File
Handling Binary file
Operation using
pickle module
pickle.dump() function is used to store the object data to the file. It
takes 3 arguments.First argument is the object that we want to
store. The second argument is the file object we get by opening the
desired file in write-binary (wb) mode. And the third argument is
the key-value argument. This argument defines the protocol. There
are two type of protocol – pickle.HIGHEST_PROTOCOL and
pickle.DEFAULT_PROTOCOL.
32
File Handling
Read records from a Binary file
- pickle module
f = open('d:/student.dat','rb')
while True:
try:
rec = pickle.load(f) Here we will iterate
print('Roll Num:',rec['Rollno']) using infinite while
print('Name:',rec['Name'])
loop and exit on end of
print('Marks:',rec['Marks'])
except EOFError: file is reached.at each
break iteration a dictionary
f.close() data is read into rec
and then values are
being displayed
33
File Handling
f = open('d:/student.dat','rb')
Search record in a Binary file
flag = False - pickle module
r=int(input(“Enter rollno to be searched”))
while True:
try:
rec = pickle.load(f) Here value of r to be
if rec['Rollno'] == r: searched will be compared
print('Roll Num:',rec['Rollno']) with rollno value of file in
print('Name:',rec['Name']) each iteration/next record
print('Marks:',rec['Marks']) and if matches then
flag = True relevant data will be shown
except EOFError: and flag will be set to True
break otherwise it will remain
if flag == False: False and ‘No Record Found
print('No Records found') message will be displayed’
f.close()
34
File Handling
Update record of a Binary file
f= - pickle module
open('d:/student.dat','rb')
reclst = []
r=int(input(“enter roll no to be f.close()
updated”))
m=int(input(“enter correct marks”))
while True:
try:
rec = pickle.load(f)
reclst.append(rec)
except EOFError:
break
f.close()
for i in range (len(reclst)):
if reclst[i]['Rollno']==r:
reclst[i]['Marks'] = m
f = open('d:/student.dat','wb')
for x in reclst:
pickle.dump(x,f)
data of reclst.
Here we are reading all records If large data are in student.dat file
from binary file and storing those then It’s alternative way can be
in reclst list then update using temporary file creation with
relevant roll no corrected data then using os
/marks data in reclst list and create module for remove and rename
/replace student.dat file with all method (just similar to modification
of text file)
35
File Handling
Delete record of a Binary file
f= - pickle module
open('d:/student.dat','rb')
reclst = []
r=int(input(“enter roll no to be f.close()
deleted”))
while True:
try:
rec = pickle.load(f)
reclst.append(rec)
except EOFError:
break
f.close()
f=
open('d:/student.dat','wb')
for x in reclst:
if
x['Rollno']==r
: continue
pickle.dump(x,f)
Here we are reading all records from If large data are in student.dat file
binary file and storing those in then It’s alternative way can be
reclst list then write all records using temporary file creation with
except matching roll no(with the corrected data then using os
help of continue statement) in module for remove and rename
student.dat file.Due to wb mode method (just similar to deletion
old data will be removed. from text file)
36
Bibliography
www.google.com
www.slideshare.com
cbseacademic.nic.in
www.youtube.com
37
Thank
You
38