170 likes | 172 Vues
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”)
E N D
Files Victor Norman CS104
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 lineslines = dataFile.readlines()
Typical use of files for data Book had this code in it: 1 infile = open("qbdata.txt", "r") 2 line = infile.readline() 3 while line != “”: 4 values = line.split() 5 print('QB', values[0], values[1], 'had a rating of', values[10]) 6 line = infile.readline() 7 8 infile.close() “priming read” Useful for processing data. values are strings. set up for next while test, but identical to previous line.
Remove repeated readline() 1 infile = open("qbdata.txt", "r") 2 while True: • line = infile.readline() • if line == “”: break # done with loop: go to line 7 • 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 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()
“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.”