In: Computer Science
In the same module/file, write a function processAnimals that takes one argument, the name of an input file. The function returns the list of animals created or an empty list if the file didn't contain any lines. The input file contains zero or more lines with the format: species, language, age where species is a string representing an animal's species, language is a string representing an animal's language, and age is an integer representing an animal's age. The items on each line are separated by commas. The processAnimals function should read all lines in the file, creating an Animal object for each line and placing the object into a list. The function also prints to output the result of calling the method speak on each object in the list it created. Don't forget to close the input file. The information below shows how you would call the function processAnimals on an example file. Please note that your implementation should work on any file with the specified format, not just the one provided as a test case:
>>> processAnimals('animals.txt')
I am a 8 year-old cat and I meow.
I am a 22 year-old dog and I bark.
I am a 2 year-old bat and I use sonar.
[Animal('cat','meow',8), Animal('dog','bark',22), Animal('bat','use sonar',2)]
>>> processAnimals('animals.txt')
I am a 8 year-old cat and I meow.
I am a 22 year-old dog and I bark.
I am a 2 year-old bat and I use sonar.
[Animal('cat','meow',8), Animal('dog','bark',22), Animal('bat','use sonar',2)]
>>>
animal test :
cat,meow,8
dog,bark,22
bat,use sonar,2
yse python3.7
Code is as below:
#Import csv will be used to read csv files
import csv
#Animal class definition
class Animal:
#Constructor of the Animal class
def __init__(self, species, language, age):
self.species = species
self.language = language
self.age =age
#__repr__ method is called on each element when you try to print list
def __repr__(self):
return "Animal('"+ self.species + "',"+ self.language + "'," + str(self.age) + ")"
#speak method to display the data as requested
def speak(self):
print("I am a " + str(self.age) + " year-old " + self.species + " and I " + self.language + ".")
#processAnimals function to read file
def processAnimals(fileName):
listOfAnimals =[]
#open the file
with open(fileName, newline='') as fileToProcess:
csvFileData = csv.reader(fileToProcess,delimiter=',')
for rowData in csvFileData:
#Create animal object and append to the list
animal = Animal(rowData[0],rowData[1],rowData[2])
animal.speak() #call speak method of animal class
listOfAnimals.append(animal)
fileToProcess.close() #to close the file
return listOfAnimals
#Call processAnimals function
AnimalList = processAnimals("animals.txt")
#print the full list
print (AnimalList)
Code screen shot is for your reference and indentation
Output:
When text file is empty:
When text file have data as given:
In case of any query, do comment.
Please rate answer. Thanks