CMSC 201 - Lec10 - File IO - Gibson
CMSC 201 - Lec10 - File IO - Gibson
2 www.umbc.edu
Any Questions from Last Time?
www.umbc.edu
Today’s Objectives
• To learn about escape sequences
– Why we need them
– How to use them
• To be able to
– Open a file
– Read in its data
4 www.umbc.edu
Escape Sequences
www.umbc.edu
“Misbehaving” print() Function
• There are times when the print() function
doesn’t output exactly what we want
6 http://learnpythonthehardway.org/book/ex10.html www.umbc.edu
Special Characters
• Just like Python has special keywords…
– for, int, True, etc.
7 www.umbc.edu
Backslash: Escape Sequences
• The backslash character (\) is used to
“escape” a special character in Python
– Tells Python not to treat it as special
8 www.umbc.edu
Using Escape Sequences
• There are three ways to solve the problem of
printing out our height using quotes
>>> print("I am 5'4\"")
I am 5'4"
>>> print('I am 5\'4"')
I am 5'4"
>>> print("I am 5\'4\"")
I am 5'4"
9 www.umbc.edu
Using Escape Sequences
• There are three ways to solve the problem of
printing out our height using quotes
escape double quotes
>>> print("I am 5'4\"") (using " for the string)
I am 5'4“
escape single quotes
>>> print('I am 5\'4"') (using ' for the string)
I am 5'4"
>>> print("I am 5\'4\"") escape both single and
double quotes (works
I am 5'4" for both ' and ")
10 www.umbc.edu
Common Escape Sequences
Escape Sequence Purpose
\' Print a single quote
\" Print a double quote
\\ Print a backslash
\t Print a tab
\n Print a new line (“enter”)
""" Allows multiple lines of text
""" is not really an escape sequence, but is useful for printing quotes
11 http://learnpythonthehardway.org/book/ex10.html www.umbc.edu
Escape Sequences Example
tabby_cat = "\tI'm tabbed in."
print(tabby_cat)
I'm tabbed in. \t adds a tab
12 http://learnpythonthehardway.org/book/ex10.html www.umbc.edu
Escape Sequences Example
fat_cat = """
I'll do a list:
\t* Cat food
\t* Fishies
\t* Catnip\n\t* Grass
"""
print(fat_cat)
I'll do a list:
* Cat food
* Fishies
* Catnip
* Grass
13 http://learnpythonthehardway.org/book/ex10.html www.umbc.edu
Escape Sequences Example
fat_cat = """
I'll do a list:
\t* Cat food
\t* Fishies
\t* Catnip\n\t* Grass when using triple quotes
"""
("""), the times you hit
print(fat_cat)
“enter” inside the string
I'll do a list: will print as newlines
* Cat food
* Fishies
* Catnip
* Grass
14 http://learnpythonthehardway.org/book/ex10.html www.umbc.edu
Escape Sequences Example
fat_cat = """
I'll do a list:
\t* Cat food
\t puts in a tab
\t* Fishies
\t* Catnip\n\t* Grass
"""
\n adds a newline
>>> print(fat_cat)
I'll do a list:
* Cat food
* Fishies
* Catnip
* Grass
15 http://learnpythonthehardway.org/book/ex10.html www.umbc.edu
How Python Handles Escape Sequences
• Escape sequences look like two characters to us
• Python treats them as a single character
0 1 2 3 0 1 2 3
d o g \n \t c a t
16 www.umbc.edu
File Input/Output
www.umbc.edu
Why Use Files?
• Until now, the Python programs you've been
writing are pretty simple for input/output
– User types input at the keyboard
– Results (output) are displayed in the console
• This is fine for short and simple input…
– But what if we want to average 50 numbers,
and mess up when entering the 37th one?
– Start all over???
18 www.umbc.edu
What is File I/O?
• One solution is to read the information in
from a file on your computer
– You could even write information to a file
19 https://www.codecademy.com/courses/python-intermediate-en-OGNHh/0/1 www.umbc.edu
File I/O Example Usage
• “Read” in a file using a word processor
– File opened
– Contents read into memory (RAM)
– File closed
– IMPORTANT: Changes to the file are
made to the copy stored in memory,
not the original file on the disk
20 www.umbc.edu
File I/O Example Usage
• “Write” a file using a word processor
– (Saving a word processing file)
– Original file on the disk is reopened in a
mode that will allow writing
• This actually erases the old contents!
– Copy the version of the document stored in
memory to the original file on disk
– File is closed
21 www.umbc.edu
File Processing
• In order to do interesting things with files, we
need to be able to perform certain operations:
– Associate an external file with a program object
• Opening the file
– Manipulate the file object
• Reading from or writing to the file object
– Close the file
• Making sure the object and file match
22 www.umbc.edu
Syntax: Opening a File
www.umbc.edu
Syntax for open() Function
myFile = open(FILE_NAME [, ACCESS_MODE][, BUFFERING])
FILE_NAME
24 www.umbc.edu
Syntax for open() Function
myFile = open(FILE_NAME [, ACCESS_MODE][, BUFFERING])
25 www.umbc.edu
Syntax for open() Function
myFile = open(FILE_NAME [, ACCESS_MODE][, BUFFERING])
26 www.umbc.edu
Examples of Using open()
• In general, we will use commands like:
testFile = open("scores.txt")
dataIn = open("old_stats.dat")
dataOut = open("stats.dat", "w")
• We will ignore the optional buffering argument
scores.txt
an example 2.5 8.1 7.6 3.2 3.2
input file 3.0 11.6 6.5 2.7 12.4
8.0 8.0 8.0 8.0 7.5
27 www.umbc.edu
File Processing: Reading
www.umbc.edu
Using File Objects to Read Files
myFile = open("myStuff.txt")
30 www.umbc.edu
Entire Contents into One String
>>> info = open("hours.txt")
it’s literally one
>>> wholeThing = info.read()
giant string!
>>> wholeThing
'123 Susan 12.5 8.1 7.6 3.2\n456 Brad 4.0
11.6 6.5 2.7 12\n789 Jenn 8.0 8.0 8.0 8.0
7.5\n'
36 www.umbc.edu
A Better Way to Read One Line at a Time
• Instead of reading them manually, use a
for loop to iterate through the file line by line
37 www.umbc.edu
Whitespace
www.umbc.edu
Whitespace
• Whitespace is any “blank” character, that
represents space between other characters
• For example: tabs, newlines, and spaces
"\t" "\n" " "
39 www.umbc.edu
Removing the Newline from the End
• To remove the escaped newline sequence (\n)
from a string we read in, we can use slicing
myString = myString[:-1]
0 1 2 3
d o g \n
-4 -3 -2 -1
myString
40 www.umbc.edu
Removing the Newline from the End
• To remove the escaped newline sequence (\n)
from a string we read in, we can use slicing
myString = myString[:-1]
don’t remove 0 1 2 3
anything from the
beginning d o g \n
-4 -3 -2 -1
just remove the very
last character myString
41 www.umbc.edu
Removing Whitespace
• To remove all whitespace from the
start and end of a string, we can use strip()
spacedOut = spacedOut.strip()
\t c a t s \n
spacedOut
42 www.umbc.edu
Removing Whitespace
• To remove all whitespace from the
start and end of a string, we can use strip()
spacedOut = spacedOut.strip()
\t c a t s \n
spacedOut
43 www.umbc.edu
Removing Whitespace
• To remove all whitespace from the
start and end of a string, we can use strip()
spacedOut = spacedOut.strip()
\t c a t s \n
spacedOut
44 www.umbc.edu
Miscellaneous (and Exercises!)
www.umbc.edu
Getting a Filename from a User
• Instead of putting the filename straight in the
code, we can ask the user for the filename
• Save their response in a variable, and call the
open() function with it
# printfile.py
# Prints a file to the screen.
def main():
fname = input("Enter filename: ")
infile = open(fname, 'r')
data = infile.read()
print(data)
main()
46 www.umbc.edu
Exercise: Jabberwocky
• Write a program that goes through a file and reports
the longest line in the file
Example Input File: caroll.txt
Beware the Jabberwock, my son,
the jaws that bite, the claws that catch,
Beware the JubJub bird and shun
the frumious bandersnatch.
Example Output:
>>> longest.py
longest line = 42 characters
the jaws that bite, the claws that catch,
47 www.umbc.edu
Jabberwocky Solution
def main():
input = open("carroll.txt")
longest = ""
for line in input:
if len(line) > len(longest):
longest = line
48 www.umbc.edu
Announcements
• (Pre) Lab 5 has been released on Blackboard
– Future ones will be available the weekend prior
• Homework 4 is out
– Due by Tuesday (Oct 6th) at 8:59:59 PM