Gr12-Ch-5-File Handling Notes
Gr12-Ch-5-File Handling Notes
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 appending function to free up system resources and
data to it. prevent data loss.
The syntax is : file_objectname =
The syntax is : file.close()
open("filename", "mode")
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.
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+")
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
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.
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()
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.
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 ?
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.
8.What role is played by file modes in file operations ? Describe the various file mode constants
and their meanings.
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.
10.When do you think text files should be preferred over binary files ?
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.
(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")
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.
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.
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.
(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()
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.
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.
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.
17.How do you change the delimiter of a csv file while writing into it ?
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.
18.When and why should you suppress the EOL translation in csv file handling ?
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.
19.If you rename a text file's extension as .csv, will it become a csv file ? Why/why not ?
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.
20.Differentiatebetween "w" and "r" file modes used in Python while opening a data file. Illustrate
the difference using suitable examples.
(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
(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
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
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
Output
1. — This line opens the file named poemBTH.txt in read mode ("r")
obj1 = open("poemBTH.txt", "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. — This line prints the contents of s3.
print(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 :
Answer
Output
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
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
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. — This line opens a file named poemBTH.txt in read mode ("r") and
f = open("poemBTH.txt", "r")
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. — After the for loop completes, this statement prints the value of
print(nl) 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
Answer
Output
Dunzo
Explanation
1. — Imports the
import pickle 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
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
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)
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)
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>).
Question 15
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.
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
Question 2
Answer
filter_records('sports.dat', 'Athletic.dat')
Answer
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
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.
Answer
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
print(count)
Output
9
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())
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())
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
display_lines("MYNOTES.TXT")
Output
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
DISPLAYWORDS("STORY.TXT")
Output
a
was
a
boy
Jay
He
had
a
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:
e
c
The file "UPPER.txt" includes:
A
D
The file "OTHERS.txt" includes:
7
@
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
count_lines("LINES.TXT")
Output
3
Question 13
Write a program that counts the number of characters up to the first $ in a text file.
Answer
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
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
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
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
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
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
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
Question 19
(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
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
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.
Answer
Show_words('NOTES.TXT')
Output
Question 21
Write a Python program to read a given CSV file having tab delimiter.
Answer
Output
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 read_csv(file_name):
with open(file_name, 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
write_nested_list(nested_list, 'output.csv')
print("Content of 'output.csv':")
read_csv('output.csv')
Output
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
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
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.
def add():
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