Before session 6
Files
Watch the videos. Next two videos (part 1 and part 2) show how to open data files on your computer and read throught the files using Python.
Slides
Text-book: chapter 7 - files
Test
Go to Moodle and take the sixth test on the video lecture.
Homework
The deadline for homework is Thursday. So, you should start with homework already before the session.
NB! Make sure that the text files (.txt) are in the same folder as your Python code. Otherwise Python will not find the files.
Example 1. Shoe size
The file foot.txt contains data about foot lengths. The following program reads the data from the file, calculates a suitable shoe size for each foot length and prints the result out. The program prints Invalid input if the foot length cannot be converted into a number for some reason, and proceeds with the next line of the file.
def shoe_size(length): return 1.5 * (length + 1.5) ffile = open("foot.txt") for foot in ffile: try: f = float(foot) s = shoe_size(f) print("Foot length:", f, "Suitable shoe size is", round(s)) except: print("Invalid input") ffile.close()
Example 2. Upper case
The following program asks for the file name, then the program reads the file and prints the contents of the file (line by line) in the upper case. The program works nicely with all the files which exist and do not exist.
fname = input("Please enter the file name: ") try: ffile = open(fname) except: print("File cannot be opened:", fname) else: for line in ffile: print(line.strip().upper()) ffile.close()
Homework 6.1 Books and authors
Write a program that reads book titles and authors from a file called books.txt and displays the information found in file. Every line in file books.txt has the name of the book, "by" and the author's name. The result should contain the author first, followed by "wrote" and then the book name. For example: Joanne Rowling wrote Harry Potter. Also, use try
and except
blocks to handle file opening errors.
books.txt content:
In Search of Lost Time by Marcel Proust Ulysses by James Joyce Don Quixote by Miguel de Cervantes Hamlet by William Shakespeare
The output of the program should be:
>>> %Run solution.py
Marcel Proust wrote In Search of Lost Time
James Joyce wrote Ulysses
Miguel de Cervantes wrote Don Quixote
William Shakespeare wrote Hamlet
If you have been struggling with this exercise for some time, maybe you can get help from troubleshooter: https://progtugi.cs.ut.ee#/ts/623aeacaef7eaf5634394b2b/
. It tries to explain the most common problems and give hints.
Homework 6.2 Messy data
Row numbers got mixed up by accident in the data.txt file. Write a program that outputs all the lines from the file with the correct line numbers. The result should change only the integers displaying the row number, the first row should be 1. and the last one equal to a total number of rows.
Content of data.txt:
3. First 11. Second 7. Third 5. Fourth
Program output should be:
>>> %Run solution.py
1. First
2. Second
3. Third
4. Fourth
If you have been struggling with this exercise for some time, maybe you can get help from troubleshooter: https://progtugi.cs.ut.ee#/ts/623aed3cef7eaf5634394b62/
. It tries to explain the most common problems and give hints.
Go to Moodle and upload your solution into Homework 6.