0% found this document useful (0 votes)
9 views52 pages

Chapter 5 File Handling

Uploaded by

Vineet Pal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views52 pages

Chapter 5 File Handling

Uploaded by

Vineet Pal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 52

Chapter 5

File Handling
Type A: Short Answer Questions/Conceptual Questions

Question 1

What is the difference between "w" and "a" modes ?

Answer

The differences between "w" and "a" modes are:

"w" mode "a" mode

The "w" mode in file opening is The "a" mode in file opening is used for
used for writing data to a file. appending data to a file.

If the file exists, Python will If the file exists, the data in the file is retained
truncate existing data and over- and new data being written will be appended to
write in the file. the end of the file.

Question 2

What is the significance of a file-object ?

Answer

File objects are used to read and write data to a file on disk. The file object is
used to obtain a reference to the file on disk and open it for a number of
different tasks. File object is very important and useful tool as through a file
object only, a Python program can work with files stored on hardware. All the
functions that we perform on a data file are performed through file objects.

Question 3

How is file open() function different from close() function?

Answer

open() function close() function

The open() function is used to open a file. The close() function is used to close a
open() function close() function

file object.

It creates a file object, which allows to When we're done working with a file, we
perform various operations on the file, such should always close it using the close()
as reading from it, writing to it, or function to free up system resources
appending data to it. and prevent data loss.

The syntax is : file_objectname =


The syntax is : file.close()
open("filename", "mode")

Question 4

Write statements to open a binary file C:\Myfiles\Text1.txt in read and write


mode by specifying file path in two different formats.

Answer

The two different formats of specifying file path for opening the file C:\
Myfiles\Text1.txt in read and write mode are:

1. file1 = open("C:\\Myfiles\\Text1.txt", "rb+")

2. file2 = open(r"C:\Myfiles\Text1.txt", "rb+")

Question 5

Which of the following Python modules is imported to store and retrieve


objects using the process of serialization and deserialization ?

1. csv

2. binary

3. math

4. pickle

Answer

pickle

Reason — The pickle module in Python is imported to store and retrieve


objects using the process of serialization and deserialization. It allows us to
convert Python objects into a byte stream for storage or transmission
(serialization) and to convert a byte stream into Python objects
(deserialization). This process is commonly referred to as pickling and
unpickling. The pickle module provides functions like dump() and load() for
serialization and deserialization, respectively.

Question 6

Which of the following function is used with the csv module in Python to read
the contents of a csv file into an object ?

1. readrow()

2. readrows()

3. reader()

4. load()

Answer

reader()

Reason — In the CSV module in Python, the reader() function is used to read
the contents of a CSV file into an object. This function returns a reader object
which can be used to iterate over the rows of the CSV file, where each row is
represented as a list of strings. This allows to process the data contained
within the CSV file.

Question 7

When a file is opened for output in write mode, what happens when

(i) the mentioned file does not exist

(ii) the mentioned file does exist ?

Answer

When a file is opened for output in write mode ("w" mode) in Python, the
behaviour differs depending on whether the mentioned file already exists or
not:

(i) If the mentioned file does not exist — If the file specified in the open()
function does not exist, Python will create a new file with the given name.
The file will be opened for writing, and any data written to it will be written
from the beginning of the file.
(ii) If the mentioned file does exist — If the file specified in the open()
function already exists, Python will truncate existing data and over-write in
the file. It's essential to be cautious when opening existing files in write
mode, as any existing data will be lost when the file is opened in "w" mode.

Question 8

What role is played by file modes in file operations ? Describe the various file
mode constants and their meanings.

Answer

File modes play a crucial role in file operations in Python as they determine
how the file will be opened and what operations can be performed on it. Each
file mode specifies whether the file should be opened for reading, writing,
appending, or a combination of these operations. Additionally, file modes can
distinguish between text mode and binary mode, which affects how the file
data is handled.

Here are the various text file mode constants in Python and their meanings:

1. "r" — Opens the file for reading only. This is the default mode if no
mode is specified.

2. "w" — Opens the file for writing only.

3. "a" — Opens the file for writing, but appends new data to the end of
the file.

4. "r+" — Opens the file for both reading and writing.

5. "w+" — Opens the file for writing and reading.

6. "a+" — Opens the file for reading and appending.

Here are the various binary file mode constants in Python and their
meanings:

"rb", "wb", "ab", "rb+", "wb+", "ab+" — These modes are similar to their
corresponding text modes ("r", "w", "a", "r+", "w+", "a+"), but they operate
in binary mode.

Question 9

What are the advantages of saving data in :

(i) binary form


(ii) text form

(iii) csv files ?

Answer

(i) The advantages of saving data in binary form are as follows:

1. Efficiency — Binary files store data in a compact binary format, which


can lead to smaller file sizes compared to text-based formats. Binary
form is efficient for storing raw binary data.

2. Speed — Reading and writing binary data can be faster than text-
based formats because there is no need for encoding or decoding
operations.

3. Data Integrity — Binary files preserve the exact binary representation


of data without any loss of information.

(ii) The advantages of saving data in text form are as follows:

1. Human Readability — Text-based formats, such as plain text files, are


human-readable, making them easy to inspect and edit using a text
editor.

2. Interoperability — Text files can be easily shared and processed across


different platforms and programming languages.

3. Compatibility — Text-based formats are widely supported by various


software applications and systems, making them a versatile choice for
data interchange and communication.

(iii) The advantages of saving data in CSV files are as follows:

1. Tabular Data Representation — CSV (Comma-Separated Values) files


provide a simple and standardized way to represent tabular data, with
rows and columns separated by commas.

2. Simplicity — CSV files are easy to create, parse, and manipulate using
spreadsheet software.

3. Flexibility — CSV files can store a wide range of data types, including
numbers, strings, and dates.

4. Interoperability — CSV files are supported by many software


applications, databases, and programming languages, allowing for
seamless integration and data exchange between different systems.
Question 10

When do you think text files should be preferred over binary files ?

Answer

Text files should be preferred over binary files when dealing with human-
readable data that does not require special encoding or formatting. They are
ideal for storing plain text, such as configuration files, logs, or documents, as
they are easily editable and can be viewed using a simple text editor. Text
files are also more portable and platform-independent, making them suitable
for data interchange between different systems.

Question 11

Write a statement in Python to perform the following operations :

(a) To open a text file "BOOK.TXT" in read mode

(b) To open a text file "BOOK.TXT" in write mode

Answer

(a) To open a text file "BOOK.TXT" in read mode : file1 = open("BOOK.TXT",


"r")

(b) To open a text file "BOOK.TXT" in write mode : file2 = open("BOOK.TXT",


"w")

Question 12

When a file is opened for output in append mode, what happens when

(i) the mentioned file does not exist

(ii) the mentioned file does exist.

Answer

When a file is opened for output in append mode ("a" mode) in Python, the
behaviour differs depending on whether the mentioned file already exists or
not:

(i) If the mentioned file does not exist — If the file specified in the open()
function does not exist, Python will create a new file with the given name.
The file will be opened for writing, and any data written to it will be
appended to the end of the file.
(ii) If the mentioned file does exist — If the file specified in the open()
function already exists, the data in the file is retained and new data being
written will be appended to the end of the file.

Question 13

How many file objects would you need to create to manage the following
situations ? Explain.

(i) to process three files sequentially

(ii) to merge two sorted files into a third file.

Answer

(i) To process three files sequentially — In this scenario, where we need to


process three files sequentially, we would need a single file object, as we can
reuse a single file object by opening then processing and closing it for each
file sequentially.

For example :

f = open("file1.txt", "r")

# Process file 1 using f

f.close()

f = open("file2.txt", "r")

# Process file 2 using f

f.close()

f = open("file3.txt", "r")

# Process file 3 using f

f.close()

Here, we are reusing the f file object three times sequentially. We start by
opening file1 in read mode and store its file handle in file object f. We
process file1 and close it. After that, same file object f is again reused to
open file 2 in read mode and process it. Similarly, for file3 also we reuse the
same file object f.
(ii) To merge two sorted files into a third file — In this scenario, where we
need to merge two sorted files into a third file, we would need three file
objects, one for each input file and one for the output file. We would open
each input file for reading and the output file for writing. Then, we would
read data from the input files, compare the data, and write the merged data
to the output file. Finally, we would close all three files after the merging
operation is complete.

For example :

f1 = open("file1.txt", "r")

f2 = open("file2.txt", "r")

f3 = open("merged.txt", "w")

# Read line from f1

# Read line from f2

# Process lines

# Write line to f3

f1.close()

f2.close()

f3.close()

Question 14

Is csv file different from a text file ? Why/why not ?

Answer

A CSV (Comma-Separated Values) file is a specific type of text file. The


similarities and differences of CSV files with text files are as follows :

The similarities :

1. Both are text-based formats.

2. Both store data in a human-readable format.

3. Both use plain text characters to represent data.

4. Both are platform independent.

The differences :
1. CSV files have a structured format where data is organized into rows
and columns, separated by delimiters such as commas, tabs, or
semicolons. Text files, on the other hand, can have any structure, and
data may not be organized into rows and columns.

2. CSV files are specifically designed for storing tabular data, such as
spreadsheets, where each row represents a record and each column
represents a field. Text files can contain any type of textual
information.

3. CSV files use delimiters (such as commas, tabs, or semicolons) to


separate values within each row, while text files do not use delimiters.

Question 15

Is csv file different from a binary file ? Why/why not ?

Answer

Yes, a CSV (Comma-Separated Values) file is different from a binary file. A


CSV (Comma-Separated Values) file differs from a binary file in several
aspects. CSV files are text-based and structured to store tabular data, with
records separated by line breaks and fields by delimiters like commas. They
are human-readable and editable using text editors, facilitating data
interchange between applications and platforms. In contrast, binary files
store data in a non-text, machine-readable format, represented by
sequences of bytes. There is no delimiter for a line and no character
translations occur. They accommodate diverse data types like images, audio,
but are not human-readable and require specialized software for
interpretation.

Question 16

Why are csv files popular for data storage ?

Answer

CSV (Comma-Separated Values) files are popular for data storage due to the
following reasons:

1. Easier to create.

2. Preferred export and import format for databases and spreadsheets.

3. Capable of storing large amount of data.

Question 17
How do you change the delimiter of a csv file while writing into it ?

Answer

To change the delimiter of a CSV file while writing into it, we can specify the
desired delimiter when creating the CSV writer object. In Python, we can
achieve this using the csv.writer() function from the csv module. By default,
the delimiter is a comma (,), but we can change it to any other character,
such as a tab (\t), semicolon (;), or pipe (|).

import csv

with open('output.csv', 'w', newline='') as csvfile:

csv_writer = csv.writer(csvfile, delimiter=';')

csv_writer.writerow(['Name', 'Age', 'City'])

csv_writer.writerow(['John', 30, 'New York'])

csv_writer.writerow(['Alice', 25, 'London'])

In this example:

1. We open the CSV file for writing using the open() function with mode
'w'.

2. We create a CSV writer object csv_writer using csv.writer() and specify


the desired delimiter using the delimiter parameter.

3. We then use the writerow() method of the CSV writer object to write
rows to the CSV file, with each row separated by the specified
delimiter.

Question 18

When and why should you suppress the EOL translation in csv file handling ?

Answer

We may need to suppress the end-of-line (EOL) translation in CSV file


handling in Python in specific situations where precise control over line
endings is necessary. Different operating systems utilize different
conventions for representing line endings in text files. For instance, Windows
uses \r\n (carriage return + line feed), Unix-based systems (Linux, macOS)
use \n (line feed), and classic Mac OS used \r (carriage return). When reading
or writing CSV files intended for compatibility across multiple platforms,
suppressing EOL translation ensures that line endings are preserved exactly
as they are, without automatic conversion to the platform-specific
convention. To suppress EOL translation in CSV file handling in Python, we
can use the newline='' parameter when opening the file with the open()
function. This parameter instructs Python to suppress EOL translation and
preserve the original line endings in the file.

Question 19

If you rename a text file's extension as .csv, will it become a csv file ?
Why/why not ?

Answer

Renaming a text file's extension to ".csv" does not automatically convert it


into a CSV (Comma-Separated Values) file. To create a CSV file, we need to
ensure that the file's content adheres to :

1. Content Format — A CSV file is structured with data organized into


rows and columns, with each field separated by a delimiter, typically a
comma (,).

2. Delimiter Usage — CSV files require a specific delimiter (usually a


comma) to separate fields.

3. File Encoding — CSV files are often encoded using standard text
encodings such as UTF-8 or ASCII.

Question 20

Differentiate between "w" and "r" file modes used in Python while opening a
data file. Illustrate the difference using suitable examples.

Answer

"w" mode "r" mode

It is also called as write mode. It is also called as read mode.

The "w" mode is used to open a file for The "r" mode is used to open a file for
writing. reading.

It creates a new file if the file does not If the file does not exist, it raises a
exist. FileNotFoundError.
"w" mode "r" mode

If the file exists, Python will truncate If the file exists, Python will open it for
existing data and over-write in the file. reading and allow to access its contents.

Example:
Example:
with open("example.txt", "r") as file:
with open("example.txt", "w") as file:
data = file.read()
file.write("Hello, world!\n")
print(data)

Question 21

Differentiate between the following :

(i) f = open('diary.txt', 'r')

(ii) f = open('diary.txt', 'w')

Answer

(i) f = open('diary.txt', 'r') — This line opens the file diary.txt in read mode
('r'). If the file does not exist, Python will raise an error. If the file exists, the
data will not be erased.

(ii) f = open('diary.txt', 'w') — This line opens the file diary.txt in write mode
('w'). If the file does not exist, Python creates new file with the specified
name. If the file exists, Python will truncate existing data and over-write in
the file.

Type B: Application Based Questions

Question 1

How are following codes different from one another ?

(a)

my_file = open('poem.txt', 'r')

my_file.read()

(b)

my_file = open('poem.txt', 'r')

my_file.read(100)

Answer
The provided code snippets (a) and (b) are similar in that they both open the
file poem.txt in read mode ('r'). However, they differ in how they read the
contents of the file:

(a) my_file.read(): This code reads the entire content of the file poem.txt into
a single string. It reads until the end of the file (EOF) is reached.

(b) my_file.read(100): This code reads the first 100 characters from the
file poem.txt into a string. It reads up to the 100 number of characters or
until EOF is reached, whichever comes first.

Question 2

If the file 'poemBTH.txt' contains the following poem (by Paramhans


Yoganand) :

God made the Earth;

Man made confining countries

And their fancy-frozen boundaries.

But with unfound boundLess Love

I behold the borderLand of my India

Expanding into the World.

HaiL, mother of religions, Lotus, scenic beauty, and sages!

Then what outputs will be produced by both the code fragments given in
question1.

Answer

(a)

my_file = open('poemBTH.txt', 'r')

my_file.read()

Output

God made the Earth;

Man made confining countries

And their fancy-frozen boundaries.

But with unfound boundLess Love


I behold the borderLand of my India

Expanding into the World.

HaiL, mother of religions, Lotus, scenic beauty, and sages!

Explanation

This code reads the entire content of the file poemBTH.txt into a single
string. Since no specific number of characters is specified, it will read until
the end of the file (EOF) is reached.

(b)

my_file = open('poemBTH.txt', 'r')

my_file.read(100)

Output

God made the Earth;

Man made confining countries

And their fancy-frozen boundaries.

But with unfound

Explanation

This code reads the first 100 characters from the file "poemBTH.txt" into a
string. It is important to note that the newline at the end of each line will also
be counted as a character.

Question 3

Consider the file poemBTH.txt given above (in previous question). What
output will be produced by following code fragment ?

obj1 = open("poemBTH.txt", "r")

s1 = obj1.readline()

s2.readline(10)

s3 = obj1.read(15)

print(s3)

print(obj1.readline())
obj1.close()

Answer

The code will result in an error because at line 3 there is a syntax error. The
correct syntax is s2 = obj1.readline().

Explanation

The corrected code will be:

obj1 = open("poemBTH.txt", "r")

s1 = obj1.readline()

s2 = obj1.readline()

s3 = obj1.read(15)

print(s3)

print(obj1.readline())

obj1.close()

Output

And their fancy

-frozen boundaries.

1. obj1 = open("poemBTH.txt", "r") — This line opens the file


named poemBTH.txt in read mode ("r") and assigns the file object to
the variable obj1.

2. s1 = obj1.readline() — This line reads the first line from the file obj1
and assigns it to the variable s1.

3. s2 = obj1.readline() — This line reads the next line from the file obj1,
starting from the position where the file pointer currently is, which is
the beginning of the second line (from the previous readline() call).
Then assigns it to the variable s2.

4. s3 = obj1.read(15) — This line reads the next 15 characters from the


file obj1, starting from the position where the file pointer currently is,
which is the beginning of third line (from the previous readline() call)
and assigns them to the variable s3.

5. print(s3) — This line prints the contents of s3.


6. print(obj1.readline()) — This line attempts to read the next line from
the file obj1 and print it. However, since the file pointer is already
ahead by 15 characters (from the previous read(15) call), this line will
start reading from where the file pointer is currently positioned i.e.,
from "-" up to end of line.

7. obj1.close() — This line closes the file obj1.

Question 4

Write code to open file contacts.txt with shown information and print it in
following form :

Name: <name> Phone: <phone number>

Answer

Let the file "contacts.txt" include following sample text:

Kumar 8574075846

Priya 5873472904

Neetu 7897656378

with open("contacts.txt", "r") as file:

for line in file:

name, phone = line.strip().split()

print("Name: " + name + " \t Phone: " + phone)

Output

Name: Kumar Phone: 8574075846

Name: Priya Phone: 5873472904

Name: Neetu Phone: 7897656378

Question 5

Consider the file "poemBTH.txt" and predict the outputs of following code
fragments if the file has been opened in filepointer file1 with the following
code :

file1 = open("E:\\mydata\\poemBTH.txt", "r+")

(a)
print("A. Output 1")

print(file1.read())

print()

(b)

print("B. Output 2")

print(file1.readline())

print()

(c)

print("C. Output 3")

print(file1.read(9))

print()

(d)

print("D. Output 4")

print(file1.readline(9))

(e)

print("E. Output of Readlines function is")

print(file1.readlines())

print()

NOTE. Consider the code fragments in succession, i.e., code (b) follows code
(a), which means changes by code (a) remain intact when code (b) is
executing. Similarly, code (c) follows (a) and (b), and so on.

Answer

As mentioned in the note, the output of above code fragments together in


succession is as follows:

Output

A. Output 1

God made the Earth;

Man made confining countries


And their fancy-frozen boundaries.

But with unfound boundLess Love

I behold the borderLand of my India

Expanding into the World.

HaiL, mother of religions, Lotus, scenic beauty, and sages!

B. Output 2

C. Output 3

D. Output 4

E. Output of Readlines function is

[]

Explanation

After executing file1.read() in code snippet (a), the file pointer will be moved
to the end of the file (EOF) because all the content has been read. Therefore,
subsequent read operations, such as file1.readline(), file1.read(9), and
file1.readlines(), will start from the end of the file (EOF) and will not read any
further content, resulting in empty outputs for those print statements.

Question 6

What is the following code doing ?

file = open("contacts.csv", "a")

name = input("Please enter name.")

phno = input("Please enter phone number.")

file.write(name + "," + phno + "\n")


Answer

This code opens a CSV file named contacts.csv in append mode, as indicated
by the mode "a". This mode allows new data to be added to the end of the
file without overwriting existing content. It then prompts the user to enter a
name and a phone number through the console using the input() function.
After receiving input, it concatenates the name and phno separated by a
comma, and appends a newline character '\n' to signify the end of the line.
Finally, it writes this concatenated string to the CSV file using
the write() method of the file object. This operation effectively adds a new
record to the CSV file with the provided name and phone number.

Question 7

Consider the file "contacts.csv" created in above Q. and figure out what the
following code is trying to do?

name = input("Enter name :")

file = open("contacts.csv", "r")

for line in file:

if name in line:

print(line)

Answer

The code asks the user to enter a name. It then searches for the name in
"contacts.csv" file. If found, the name and phone number are printed as the
output.

Explanation

1. name = input("Enter name :") — This line prompts the user to enter a
name through the console, and the entered name is stored in the
variable name.

2. file = open("contacts.csv", "r") — This line opens the


file contacts.csv in read mode and assigns the file object to the
variable file.

3. for line in file: — This line initiates a for loop that iterates over each
line in the file handle (file represents the opened file object), which
enables interaction with the file's content. During each iteration, the
current line is stored in the variable line.
4. if name in line: — Within the loop, it checks if the inputted name exists
in the current line using the in operator.

5. print(line) — If the name is found in the current line, this line prints the
entire line to the console.

Question 8

Consider the file poemBTH.txt and predict the output of following code
fragment. What exactly is the following code fragment doing ?

f = open("poemBTH.txt", "r")

nl = 0

for line in f:

nl += 1

print(nl)

Answer

The code is calculating the number of lines present in the file poemBTH.txt.

Output

Explanation

1. f = open("poemBTH.txt", "r") — This line opens a file


named poemBTH.txt in read mode ("r") and assigns the file object to
the variable f.

2. nl = 0 — This line initializes a variable nl to 0.

3. for line in f: — By iterating over the file handle using a for loop as
shown, we can read the contents of the file line by line.

4. nl += 1 — Within the for loop, this statement increments the value


of nl by 1 for each iteration, effectively counting the number of lines in
the file.

5. print(nl) — After the for loop completes, this statement prints the value
of nl, which represents the total number of lines in the file.

Question 9
Write a method in Python to read the content from a text file diary.txt line by
line and display the same on screen.

Answer

def diary_content(f):

myfile = open(f, "r")

str = " "

while str:

str = myfile.readline()

print(str, end = '')

myfile.close()

diary_content("diary.txt")

Question 10

Write a method in Python to write multiple line of text contents into a text file
mylife.txt.line.

Answer

def write_to_file(file_path):

lines_to_write = ["The sun sets over the horizon.", "Birds chirp in the
morning.", "Raindrops patter on the roof.", "Leaves rustle in the breeze."]

with open(file_path, "w") as file:

for line in lines_to_write:

file.write(line + '\n')

write_to_file("mylife.txt.line")

Question 11

What will be the output of the following code ?

import pickle

ID = {1:"Ziva", 2:"53050", 3:"IT", 4:"38", 5:"Dunzo"}


fin = open("Emp.pkl","wb")

pickle.dump(ID, fin)

fin.close()

fout = open("Emp.pkl",'rb')

ID = pickle.load(fout)

print(ID[5])

Answer

Output

Dunzo

Explanation

1. import pickle — Imports the pickle module, which is used for serializing
and deserializing Python objects.

2. ID = {1: "Ziva", 2: "53050", 3: "IT", 4: "38", 5: "Dunzo"} — Defines a


dictionary named ID with keys and values.

3. fin = open("Emp.pkl", "wb") — Opens a file named Emp.pkl in binary


write mode ("wb").

4. pickle.dump(ID, fin) — Serializes the ID dictionary and writes it to the


file handle fin using the pickle.dump() function.

5. fin.close() — Closes the file fin after writing the pickled data.

6. fout = open("Emp.pkl", 'rb') — Opens the file Emp.pkl again, this time
in binary read mode ("rb"), to read the pickled data.

7. ID = pickle.load(fout) — Deserializes the data from the file fout using


the pickle.load() function and assigns it to the variable ID. This
effectively restores the original dictionary from the pickled data.

8. print(ID[5]) — Prints the value associated with key 5 in the


restored ID dictionary, which is "Dunzo".

Question 12

What will be the output of the following code ?

import pickle
List1 = ['Roza', {'a': 23, 'b': True}, (1, 2, 3), [['dogs', 'cats'], None]]

List2 = ['Rita', {'x': 45, 'y': False}, (9, 5, 3), [['insects', 'bees'], None]]

with open('data.pkl', 'wb') as f:

f.write(List1)

with open('data.pkl', 'wb') as f:

f.write(List2)

with open('data.pkl', 'rb') as f:

List1 = pickle.load(f)

print(List1)

Answer

The code raises an error because write() function does not work in binary file.
To write an object on to a binary file dump() function of pickle module is
used.

Question 13

What is the output of the following considering the file data.csv given below.

File data.csv contains:

Identifier;First name;Last name

901242;Riya;Verma

207074;Laura;Grey

408129;Ali;Baig

934600;Manit;Kaur

507916;Jiva;Jain

import csv

with open('C:\data.csv', 'r+') as f:

data = csv.reader(f)

for row in data:

if 'the' in row :
print(row)

Answer

This code will produce no output.

Explanation

By default, csv.reader() uses a comma (,) as the delimiter to separate values


in a CSV file. But the delimiter in the file data.csv is semicolon (;), hence the
rows won't split correctly, leading to each row being treated as a single
string. When the code checks if the row contains the word 'the', it will only
print rows where 'the' appears in the entire row. Therefore, the given code
will not output anything.

Question 14(a)

Identify the error in the following code.

import csv

f = open('attendees1.csv')

csv_f = csv.writer(f)

Answer

import csv

f = open('attendees1.csv') #error

csv_f = csv.writer(f)

To use the csv.writer() function, the file should be opened in write mode ('w').
The corrected code is :

import csv

f = open('attendees1.csv', 'w')

csv_f = csv.writer(f)

Question 14(b)

Identify the error in the following code.

import csv

f = open('attendees1.csv')

csv_f = csv.reader()
for row in csv_f:

print(row)

Answer

import csv

f = open('attendees1.csv') #error 1

csv_f = csv.reader() #error 2

for row in csv_f:

print(row)

1. To use the csv.reader() function, the file should be opened in read


mode ('r').

2. The reader object should be in syntax <name-of-reader-object> =


csv.reader(<file-handle>).

The corrected code is :

import csv

f = open('attendees1.csv', 'r')

csv_f = csv.reader(f)

for row in csv_f:

print(row)

Question 15

Identify the error in the following code.

import pickle

data = ['one', 2, [3, 4, 5]]

with open('data.dat', 'wb' :

pickle.dump(data)

Answer

import pickle

data = ['one', 2, [3, 4, 5]]


with open('data.dat', 'wb' : #error 1

pickle.dump(data) #error 2

1. There is a syntax error in the open() function call. The closing


parenthesis is missing in the open() function call. Also, file handle is
not mentioned.

2. The pickle.dump() function requires two arguments - the object to be


pickled and the file object to which the pickled data will be written.
However, in the provided code, the pickle.dump() function is missing
the file object argument.

The corrected code is :

import pickle

data = ['one', 2, [3, 4, 5]]

with open('data.dat', 'wb') as f:

pickle.dump(data, f)

Type C: Programming Practice/Knowledge based Questions

Question 1

Write a program that reads a text file and creates another file that is identical
except that every sequence of consecutive blank spaces is replaced by a
single space.

Answer

Let the file "input.txt" include the following sample text:

In the beginning there was chaos.

Out of the chaos came order.

The universe began to take shape.

Stars formed and galaxies were born.

Life emerged in the vast expanse.

with open("input.txt", 'r') as f:

with open("output.txt", 'w') as fout:

for line in f:
modified_line = ' '.join(line.split())

fout.write(modified_line + '\n')

The file "output.txt" includes following text:

In the beginning there was chaos.

Out of the chaos came order.

The universe began to take shape.

Stars formed and galaxies were born.

Life emerged in the vast expanse.

Question 2

A file sports.dat contains information in following format:


Event - Participant
Write a function that would read contents from file sports.dat and creates a
file named Atheletic.dat copying only those records from sports.dat where
the event name is "Atheletics".

Answer

Let the file "sports.dat" include the following sample records:

Athletics - Rahul

Swimming - Tanvi

Athletics - Akash

Cycling - Kabir

Athletics - Riya

def filter_records(input_file, output_file):

with open(input_file, 'r') as f_in:

with open(output_file, 'w') as f_out:

for line in f_in:

event, participant = line.strip().split(' - ')

if event == 'Athletics':

f_out.write(line)
filter_records('sports.dat', 'Athletic.dat')

The file "Atheletic.dat" includes following records:

Athletics - Rahul

Athletics - Akash

Athletics - Riya

Question 3

A file contains a list of telephone numbers in the following form:

Arvind 7258031

Sachin 7259197

The names contain only one word, the names and telephone numbers are
separated by white spaces. Write program to read a file and display its
contents in two columns.

Answer

Let the file "telephone.txt" include the following sample records:

Arvind 7258031

Sachin 7259197

Karuna 8479939

with open("telephone.txt", "r") as file:

f = file.readlines()

for line in f:

name, number = line.split()

print(name, '\t\t' ,number)

Output

Arvind 7258031

Sachin 7259197
Karuna 8479939

Question 4

Write a program to count the words "to" and "the" present in a text file
"Poem.txt".

Answer

Let the file "Poem.txt" include the following sample text:

To be or not to be, that is the question.

The quick brown fox jumps over the lazy dog.

To infinity and beyond!

The sun sets in the west.

To be successful, one must work hard.

to_count = 0

the_count = 0

with open("Poem.txt", 'r') as file:

for line in file:

words = line.split()

for word in words:

if word.lower() == 'to':

to_count += 1

elif word.lower() == 'the':

the_count += 1

print("count of 'to': ", to_count)

print("count of 'the': ", the_count)

Output

count of 'to': 4
count of 'the': 5

Question 5

Write a function AMCount() in Python, which should read each character of a


text file STORY.TXT, should count and display the occurrence of alphabets A
and M (including small cases a and m too).

Example :
If the file content is as follows :
Updated information
As simplified by official websites.

The EUCount() function should display the output as :


A or a : 4
M or m : 2

Answer

Let the file "STORY.TXT" include the following sample text:

Updated information

As simplified by official websites.

def AMCount(file_path):

count_a = 0

count_m = 0

with open(file_path, 'r') as file:

ch = ' '

while ch:

ch = file.read(1)

ch_low = ch.lower()

if ch_low == 'a':

count_a += 1

elif ch_low == 'm':

count_m += 1
print("A or a:", count_a)

print("M or m:", count_m)

AMCount("STORY.TXT")

Output

A or a: 4

M or m: 2

Question 6

Write a program to count the number of upper-case alphabets present in a


text file "Article.txt".

Answer

Let the file "Article.txt" include the following sample text:

PYTHON is a Popular Programming Language.

with open("Article.txt", 'r') as file:

text = file.read()

count = 0

for char in text:

if char.isupper():

count += 1

print(count)

Output

Question 7

Write a program that copies one file to another. Have the program read the
file names from user ?

Answer
def copy_file(file1, file2):

with open(file1, 'r') as source:

with open(file2, 'w') as destination:

destination.write(source.read())

source_file = input("Enter the name of the source file: ")

destination_file = input("Enter the name of the destination file: ")

copy_file(source_file, destination_file)

Question 8

Write a program that appends the contents of one file to another. Have the
program take the filenames from the user.

Answer

def append_file(f1, f2):

with open(f1, 'r') as source:

with open(f2, 'a') as destination:

destination.write(source.read())

source_file = input("Enter the name of the source file: ")

destination_file = input("Enter the name of the destination file: ")

append_file(source_file, destination_file)

Question 9

Write a method in python to read lines from a text file MYNOTES.TXT, and
display those lines, which are starting with an alphabet 'K'.

Answer

Let the file "MYNOTES.TXT" include the following sample text:


Kangaroo is a mammal native to Australia.

Lion is a large carnivorous.

Koala is an arboreal herbivorous.

Elephant is a large herbivorous mammal.

def display_lines(file_name):

with open(file_name, 'r') as file:

line = file.readline()

while line:

if line.strip().startswith('K'):

print(line.strip())

line = file.readline()

display_lines("MYNOTES.TXT")

Output

Kangaroo is a mammal native to Australia.

Koala is an arboreal herbivorous.

Question 10

Write a method/function DISPLAYWORDS() in python to read lines from a text


file STORY.TXT, and display those words, which are less than 4 characters.

Answer

Let "STORY.TXT" file contain the following text:

Once upon a time, there was a little boy named Jay

He had a dog named Leo

def DISPLAYWORDS(file_name):

with open(file_name, 'r') as file:

for line in file:

words = line.split()
for word in words:

if len(word) < 4:

print(word)

for line in file:

words = line.split()

for word in words:

if len(word) < 4:

print(word)

DISPLAYWORDS("STORY.TXT")

Output

was

boy

Jay

He

had

dog

Leo

Question 11

Write a program that reads characters from the keyboard one by one. All
lower case characters get stored inside the file LOWER, all upper case
characters get stored inside the file UPPER and all other characters get
stored inside file OTHERS.

Answer

lower_file = open("LOWER.txt", 'w')


upper_file = open("UPPER.txt", 'w')

others_file = open("OTHERS.txt", 'w')

ans = 'y'

while ans == 'y':

char = input("Enter a character: ")

if char.islower():

lower_file.write(char + "\n")

elif char.isupper():

upper_file.write(char + "\n")

else:

others_file.write(char + "\n")

ans = input("Want to enter a character? (y/n): ")

lower_file.close()

upper_file.close()

others_file.close()

Output

Enter a character: e

Want to enter a character? (y/n): y

Enter a character: A

Want to enter a character? (y/n): y

Enter a character: D

Want to enter a character? (y/n): y

Enter a character: c

Want to enter a character? (y/n): y

Enter a character: 7

Want to enter a character? (y/n): y

Enter a character: @
Want to enter a character? (y/n): n

The file "LOWER.txt" includes:

The file "UPPER.txt" includes:

The file "OTHERS.txt" includes:

Question 12

Write a function in Python to count and display the number of lines starting
with alphabet 'A' present in a text file "LINES.TXT". e.g., the file "LINES.TXT"
contains the following lines:

A boy is playing there.

There is a playground.

An aeroplane is in the sky.

Alphabets & numbers are allowed in password.

the function should display the output as 3.

Answer

The file "LINES.TXT" contains the following lines:

A boy is playing there.

There is a playground.

An aeroplane is in the sky.

Alphabets & numbers are allowed in password.

def count_lines(file_name):

count = 0
with open(file_name, 'r') as file:

for line in file:

if line.strip().startswith('A'):

count += 1

print(count)

count_lines("LINES.TXT")

Output

Question 13

Write a program that counts the number of characters up to the first $ in a


text file.

Answer

Let the sample file "myfile.txt" contain the following text:

Hello world! This is a test file.

It contains some characters until the first $ is encountered.

count = 0

with open("myfile.txt", 'r') as file:

while True:

char = file.read(1)

if char == '$' or not char:

break

count += 1

print(count)

Output

78

Question 14
Write a program that will create an object called filout for writing, associate it
with the filename STRS.txt. The code should keep on writing strings to it as
long as the user wants.

Answer

with open('STRS.txt', 'w') as filout:

ans = 'y'

while ans == 'y':

string = input("Enter a string: ")

filout.write(string + "\n")

ans = input("Want to enter more strings?(y/n)...")

Output

Enter a string: Hello

Want to enter more strings?(y/n)...y

Enter a string: world!

Want to enter more strings?(y/n)...n

The file "STRS.txt" includes:

Hello

world!

Question 15

Consider the following definition of a dictionary Member, write a method in


Python to write the content in a pickled file member.dat.

Member = {'MemberNo.': ..............., 'Name': ...............}

Answer

import pickle

member1 = {'MemberNo.': '123456', 'Name': 'Pranav'}

member2 = {'MemberNo.': '456235', 'Name': 'Aman'}


def write_member():

file = open("member.dat", 'wb')

pickle.dump(member1, file)

pickle.dump(member2, file)

file.close()

write_member()

Question 16

Consider the following definition of dictionary Staff, write a method in python


to search and display content in a pickled file staff.dat, where Staffcode key
of the dictionary is matching with 'S0105'.

Staff = {'Staffcode': ..............., 'Name' = ...............}

Answer

Let the file "staff.dat" include following data:

Staff1 = {'Staffcode': 'S0102', 'Name': 'Sanya'}

Staff2 = {'Staffcode': 'S0104', 'Name': 'Anand'}

Staff3 = {'Staffcode': 'S0105', 'Name': 'Aditya'}

import pickle

def search_and_display_staff(staff_code):

found = False

try:

file = open("staff.dat", "rb")

while True:

staff_data = pickle.load(file)
if staff_data['Staffcode'] == staff_code:

print("Staffcode:", staff_data['Staffcode'])

print("Name:", staff_data['Name'])

found = True

except EOFError:

if found == False:

print("End of file reached. No such records found.")

else:

print("Search Successful")

file.close()

search_and_display_staff('S0105')

Output

Staffcode: S0105

Name: Aditya

Question 17

Considering the following definition of dictionary COMPANY, write a method


in Python to search and display the content in a pickled file COMPANY.DAT,
where CompID key of the dictionary is matching with the value '1005'.

Company = {'CompID' = ........., 'CName' = ........., 'Turnover' = .........}

Answer

Let the file "COMPANY.DAT" include following data:

Company1 = {'CompID': '1001', 'CName': 'ABC', 'Turnover': 500000}

Company2 = {'CompID': '1003', 'CName': 'DEF', 'Turnover': 600000}

Company3 = {'CompID': '1005', 'CName': 'LMN', 'Turnover': 900000}

import pickle
def company(comp_id):

found = False

try:

file = open("COMPANY.DAT", "rb")

while True:

company_data = pickle.load(file)

if company_data['CompID'] == comp_id:

print("Company ID:", company_data['CompID'])

print("Company Name:", company_data['CName'])

print("Turnover:", company_data['Turnover'])

found = True

except EOFError:

if found == False:

print("End of file reached. No such records found.")

else:

print("Search Successful")

file.close()

company('1005')

Output

Company ID: 1005

Company Name: LMN

Turnover: 900000
Question 18

Write a function to search and display details of all trains, whose destination
is "Delhi" from a binary file "TRAIN.DAT". Assuming the binary file is
containing the objects of the following dictionary type:

Train = {'Tno': ..............., 'From': ...............,'To': ...............}

Answer

Let the dictionary contained in file "TRAIN.DAT" be as shown below:

Train1 = {'Tno': '1234', 'From': 'Mumbai', 'To': 'Delhi'}

Train2 = {'Tno': '5678', 'From': 'Chennai', 'To': 'Delhi'}

Train3 = {'Tno': '9012', 'From': 'Kolkata', 'To': 'Mumbai'}

Train4 = {'Tno': '3456', 'From': 'Delhi', 'To': 'Bangalore'}

Train5 = {'Tno': '7890', 'From': 'Pune', 'To': 'Delhi'}

import pickle

def search_trains():

found = False

try:

file = open("TRAIN.DAT", "rb")

while True:

trains = pickle.load(file)

if trains['To'] == "Delhi":

print("Train no: ", trains['Tno'])

print("From: ", trains['From'])

print("To: ", trains['To'])

found = True
except EOFError:

if found == False:

print("End of file reached. No such records found.")

else:

print("Search Successful")

file.close()

search_trains()

Output

Train no: 1234

From: Mumbai

To: Delhi

Train no: 5678

From: Chennai

To: Delhi

Train no: 7890

From: Pune

To: Delhi

Search Successful

Question 19

A binary file "Book.dat" has structure [BookNo, Book_Name, Author, Price].

(i) Write a user defined function CreateFile() to input data for a record and
add to Book.dat.

(ii) Write a function CountRec(Author) in Python which accepts the Author


name as parameter and count and return number of books by the given
Author are stored in the binary file "Book.dat"

Answer
Let the file "Book.dat" include following data:

Book1 = [1001, Midnight's Children, Salman Rushdie, 29.99]

Book2 = [1004, A Suitable Boy, Vikram Seth, 59.9]

Book3 = [1003, The White Tiger, Aravind Adiga, 49.5]

Book4 = [1002, The Satanic Verses, Salman Rushdie, 39.23]

import pickle

def CreateFile():

file = open("Book.dat", "ab")

BookNo = int(input("Enter Book Number: "))

Book_Name = input("Enter Book Name: ")

Author = input("Enter Author Name: ")

Price = float(input("Enter Price: "))

record = [BookNo, Book_Name, Author, Price]

pickle.dump(record, file)

file.close()

def CountRec(authorName):

count = 0

found = False

try:

file = open("Book.dat", "rb")

while True:

record = pickle.load(file)

if record[2] == authorName:

count += 1

found = True
except EOFError:

if found == False:

print("End of file reached. No such records found.")

else:

print("Search successful")

file.close()

return count

CreateFile()

author = input("Enter Author name to count books: ")

print("Number of books by", author, ":", CountRec(author))

Output

Enter Book Number: 1008

Enter Book Name: Three Thousand Stiches

Enter Author Name: Sudha Murty

Enter Price: 200

Enter Author name to count books: Salman Rushdie

Search successful

Number of books by Salman Rushdie : 2

Question 20

Write a function Show_words() in python to read the content of a text file


'NOTES.TXT' and display only such lines of the file which have exactly 5
words in them.

Example, if the file contains :

This is a sample file.


The file contains many sentences.
But need only sentences which have only 5 words.
Then the function should display the output as :

This is a sample file.


The file contains many sentences.

Answer

The file "NOTES.TXT" contains:

This is a sample file.

The file contains many sentences.

But need only sentences which have only 5 words.

def Show_words(file_name):

with open(file_name, 'r') as file:

for line in file:

words = line.strip().split()

if len(words) == 5:

print(line.strip())

Show_words('NOTES.TXT')

Output

This is a sample file.

The file contains many sentences.

Question 21

Write a Python program to read a given CSV file having tab delimiter.

Answer

Let "example.csv" file contain the following data:

Name Age Gender

Kavya 25 Female

Kunal 30 Male
Nisha 28 Female

import csv

with open("example.csv", 'r', newline='') as file:

reader = csv.reader(file, delimiter='\t')

for row in reader:

print(row)

Output

['Name Age Gender']

['Kavya 25 Female']

['Kunal 30 Male']

['Nisha 28 Female']

Question 22

Write a Python program to write a nested Python list to a csv file in one go.
After writing the CSV file read the CSV file and display the content.

Answer

import csv

def write_nested_list(data, file_name):

with open(file_name, 'w', newline='') as file:

writer = csv.writer(file)

writer.writerows(data)

def read_csv(file_name):

with open(file_name, 'r') as file:

reader = csv.reader(file)

for row in reader:


print(row)

nested_list = [['Name', 'Age', 'Gender'],

['Prateek', '14', 'Male'],

['Ananya', '24', 'Female'],

['Aryan', '44', 'Male']]

write_nested_list(nested_list, 'output.csv')

print("Content of 'output.csv':")

read_csv('output.csv')

Output

['Name', 'Age', 'Gender']

['Prateek', '14', 'Male']

['Ananya', '24', 'Female']

['Aryan', '44', 'Male']

Question 23

Write a function that reads a csv file and creates another csv file with the
same content, but with a different delimiter.

Answer

Let "original.csv" file contain the following data:

Product,Price,Quantity

Apple,1.99,100

Banana,0.99,150

Orange,2.49,80
import csv

def change_delimiter(input_file, output_file, input_delimiter,


output_delimiter):

with open(input_file, 'r', newline='') as f_in:

reader = csv.reader(f_in, delimiter = input_delimiter)

data = list(reader)

with open(output_file, 'w', newline='') as f_out:

writer = csv.writer(f_out, delimiter = output_delimiter)

writer.writerows(data)

change_delimiter('original.csv', 'modified.csv', ',', '|')

Contents of "modified.csv":

Product|Price|Quantity

Apple|1.99|100

Banana|0.99|150

Orange|2.49|80

Question 24

Write a function that reads a csv file and creates another csv file with the
same content except the lines beginning with 'check'.

Answer

Let "input.csv" file contain the following data:

check1,10,A

check2,20,B

data1,30,C

check3,40,D
data2,50,E

import csv

def filter(input_file, output_file):

with open(input_file, 'r', newline='') as f_in, open(output_file, 'w',


newline='') as f_out:

reader = csv.reader(f_in)

writer = csv.writer(f_out)

for row in reader:

if not row[0].startswith('check'):

writer.writerow(row)

filter('input.csv', 'output.csv')

Contents of "output.csv":

data1,30,C

data2,50,E

Question 25

Give any one point of difference between a binary file and a CSV file.

Write a Program in Python that defines and calls the following user defined
functions :

(a) add(). To accept and add data of an employee to a CSV file 'furdata.csv'.
Each record consists of a list with field elements as fid, fname and fprice to
store furniture id, furniture name and furniture price respectively.

(b) search(). To display the records of the furniture whose price is more than
10000.

Answer

The difference between a binary file and CSV file is that binary files are used
for storing complex data in a non-human-readable format and they store
data in a sequence of bytes, while CSV files are plain text files used for
storing structured tabular data in a human-readable text format.

Let the file "furdata.csv" include following data:

[1, table, 20000]

[2, chair, 12000]

[3, board, 10000]

import csv

def add():

with open('furdata.csv', mode='a', newline='') as file:

writer = csv.writer(file)

fid = input("Enter furniture id: ")

fname = input("Enter furniture name: ")

fprice = float(input("Enter furniture price: "))

writer.writerow([fid, fname, fprice])

print("Record added successfully to 'furdata.csv'")

def search():

found = False

with open('furdata.csv', mode='r') as file:

reader = csv.reader(file)

print("Records of furniture with price more than 10000:")

for row in reader:

if len(row) == 3 and float(row[2]) > 10000:

print("Furniture ID:", row[0])

print("Furniture Name:", row[1])


print("Furniture Price:", row[2])

print()

found = True

if found == False:

print("No records of furniture with price more than 10000 found")

add()

search()

Output

Enter furniture id: 9

Enter furniture name: desk

Enter furniture price: 3000

Record added successfully to 'furdata.csv'

Records of furniture with price more than 10000:

Furniture ID: 1

Furniture Name: table

Furniture Price: 20000

Furniture ID: 2

Furniture Name: chair

Furniture Price: 12000

You might also like