Files Victor Norman CS104

advertisement
Files
Victor Norman
CS104
Reading Quiz
Using files
• Before reading from or writing to a file, you
have to open it. Returns a file object.
• Reading:
infile = open(“filename.txt”, “r”)
• Creating file to write to:
outfile = open(“filename.txt”, “w”)
• Appending data to an existing file:
outfile = open(“filename.txt”, “a”)
File objects are iterable
• A file object is iterable, so you can put it
where <sequence> goes in a for statement:
for line in inFile:
print(line)
• Note: line contains the ending newline each
time. So, output shows a blank line between
each line.
Other ways to read a file
• Read entire file into a single string:
fileContents = dataFile.read()
• Read file, line by line:
line = dataFile.readline()
– Note: if there are no more lines to read readline()
returns empty string: “”
• Read entire file into list of lines
lines = dataFile.readlines()
Typical use of files for data
Book had this code in it:
“priming read”
1 infile = open("qbdata.txt", "r")
2 line = infile.readline()
Useful for processing
3 while line != “”:
data. values are strings.
4
values = line.split()
5
print('QB', values[0], values[1],
'had a rating of', values[10])
6
line = infile.readline()
7
set up for next while test,
8 infile.close()
but identical to previous
line.
Remove repeated readline()
1 infile = open("qbdata.txt", "r")
2 while True:
3
line = infile.readline()
4
if line == “”:
break
# done with loop: go to line 7
5
values = line.split()
6
print('QB', values[0], values[1],
'had a rating of', values[10])
7 infile.close()
Skip lines in a file
• What if there are blank lines you want to skip?
infile = open("qbdata.txt", "r")
while True:
line = infile.readline()
if line == “”:
break
# done with loop
if line.strip() == “”: # had only
whitespace
continue
# go to top of loop
values = line.split()
print('QB', values[0], values[1],
'had a rating of', values[10])
infile.close()
Skip lines in a file
• What if there are comment lines you want to skip? (Lines
that start with #.)
infile = open("qbdata.txt", "r")
while True:
line = infile.readline()
if line == “”:
break
# done with loop
if line.strip() == “”: # had only whitespace
continue
# go to top of loop
if line.startsWith(“#”): # skip comments
continue
# go to top of loop
values = line.split()
print('QB', values[0], values[1],
'had a rating of', values[10])
infile.close()
Writing to a file
• To put data in a file:
outfile.write(“The string to put there”)
• Does not add a newline automatically, so you
have to add \n.
• E.g., to write last names, one per line:
outfile = open(“lastnames.txt”, “w”)
while … some code …:
lastName = … some code …
outfile.write(lastName + “\n”)
outfile.close()
Intro to Classes
“Records”
• In Excel, you can create rows that represent
individual things, with each column representing
some property of that thing.
• E.g., each row could represent a student, with
–
–
–
–
–
column 1: student id
column 2: student last name
column 3: student first name
column 4: gpa
column 5: how much tuition is owed…
• Each row *must* stay together: don’t want to
move values from one row to another.
How to do this in python?
• How could we make a collection of
items/values that belong together?
– Have to use a composite data type.
– i.e., lists or tuples.
• Question: does order of items/values really
matter?
Coming attractions (lab this week)
• A card is a tuple with 2 parts, a suit (one of “s”,
“d”, “c”, “h”) and a number (2 – 14).
• We create a card by making a tuple.
• We access the suit via card[0] and number via
card[1].
• What is good and what is bad about this
implementation?
What types of variables can we make?
• Is this good enough?
Wouldn’t it be nice if we could create our own
types?
Big Question
What defines a type?
• Data + operations
– what you can store.
– what you can do to or with it.
Terminology
• a class is like a recipe (or template).
– you don't eat the recipe, right?
• an object is an instantiation of that class
– that's what you eat.
• Or, a class is a new type.
• Each class is defined by its
– name
– attributes (characteristics, properties, fields)
– methods (functions)
• We already know how to define functions, but we don’t
know how to group them together, to say, “These belong
together, and they operate on this data.”
Download