Download Slides

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Guide to Programming with
Python
Chapter Seven
Files and Exceptions: The Trivia Challenge
Game
Objectives
 So far we know how to get user’s input using
raw_input(), and print out to the screen using print
statements!
 Now we are going to learn how to use files
– Read from text files
– Write to text files (permanent storage)
– Need to open a file before using it, and close it when it is done
 Read and write more complex data with files using
cPickle module (optional!)
 Intercept and handle errors during a program’s
execution
Guide to Programming with Python
2
We are Talking about Plain Text Files
 Plain text file: File made up of only ASCII
characters
 Easy to read strings from plain text files
 Text files good choice for simple information
– Easy to edit
– Cross-platform
– Human readable!
Guide to Programming with Python
3
Opening and Closing a Text File
text_file = open("read_it.txt", "r")
File object
1st argument: filename
2nd argument: access mode
text_file.close()
 Must open before read (or write); then you read
from and/or write to the file by referring to the file
object
 Always close file when done reading or writing
 Can open a file for reading, writing, or both
Guide to Programming with Python
4
File Access Modes
Files can be opened for reading, writing, or both.
Guide to Programming with Python
5
Reading from a Text File
oneletter = text_file.read(1) #read one character
fiveletter = text_file.read(5)#read 5 characters
whole_thing = text_file.read()#read the entire file
 read()
file object method
– Argument: number of characters to be read; if not
given, get the entire file
– Return value: string
 Each read() begins where the last ended
 At end of file, read() returns empty string
Guide to Programming with Python
6
Reading a Line from a File
text_file = open("read_it.txt", "r")
line1 = text_file.readline()
line2 = text_file.readline()
line3 = text_file.readline()

readline()
file object method
– Returns the entire line if no value passed
– Once read all of the characters of a line (including
the newline), next line becomes current line
text_file.readline(number_of_characters) # a little
confusing
Guide to Programming with Python
7
Reading All Lines into a List
text_file = open("read_it.txt", "r")
lines = text_file.readlines()
#lines is a list!
 readlines()
file object method
– Reads text file into a list
– Returns list of strings
– Each line of file becomes a string element in list
Compared to: read(), which reads the entire file into a
string (instead of a list of strings)
Guide to Programming with Python
8
Looping Through a Text File
>>> text_file = open("read_it.txt", "r")
>>> for line in text_file:
print line
Line 1
This is line 2
That makes this line 3
 Can iterate over open text file, one line at a time
Guide to Programming with Python
9
Two More Useful String’s Methods
e.g., read_it.txt:
Hunter 98 good
Nathan 67 bad
#The following lines for reading names and scores:
text_file = open("read_it.txt", "r")
for line in text_file:
line = line.strip()
(name, score) = line.split()
str.split([sep[, maxsplit]]) -- Return a list of the words in
the string, using sep as the delimiter string. If sep is not specified or None,
any whitespace string is a separator '1<>2<>3'.split('<>')
returns ['1', '2', '3'])
str.strip([chars]) -- Return a copy of the string with the leading
and trailing characters removed'
spacious
'.strip()
returns 'spacious'
10
Writing (a List of) Strings to a Text File
text_file = open("write_it.txt", "w")
text_file.write("Line 1\n")
text_file.write("This is line 2\n")
text_file.write("That makes this line 3\n”)
file object method writes new characters to
file open for writing
 write()
text_file = open("write_it.txt", "w")
lines = ["Line 1\n", "This is line 2\n", "That
makes this line 3\n"]
text_file.writelines(lines)
 writelines()
file object method writes list of strings
to a file
Guide to Programming with Python
11
Pickling/Unpickling Data to/from a File
(Optional!)
 Pickling: Storing complex objects (e.g., lists, dictionaries) in files
 cPickle module to pickle and store more complex data in a file
#pickle & write to file
import cPickle
variety = ["sweet", "hot", "dill"]
pickle_file = open("pickles1.dat", "w")
cPickle.dump(variety, pickle_file)
#unpickle and read from a file
pickle_file = open("pickles1.dat", "r")
variety = cPickle.load(pickle_file)
print variety
Guide to Programming with Python
12
Using a Shelf to Store/Get Pickled
Data (Optional!)
 shelf: An object written to a file that acts like a
dictionary, providing random access to a group of
objects (pickled)
import shelve
pickles = shelve.open("pickles2.dat”)
pickles["variety"] = ["sweet", "hot", "dill"]
pickles.sync()
#sync() shelf method forces changes to be written to file
for key in pickles.keys()
print key, "-", pickles[key]
#Shelf acts like a dictionary--Can retrieve pickled objects through key
13
Handling Exceptions
>>> 1/0
Traceback (most recent call last):
File "<pyshell#0>", line 1, in -toplevel1/0
ZeroDivisionError: integer division or modulo by
zero
 Exception: An error that occurs during the
execution of a program
 Exception is raised and can be caught (or
trapped) then handled
 Unhandled, halts program and error message
displayed
Guide to Programming with Python
14
Using a try Statement with an
except Clause
try:
num = float(raw_input("Enter a number: "))
except:
print "Something went wrong!"
statement sections off code that could raise
exception
 Instead of raising exception, except block run
 If no exception raised, except block skipped
 try
Guide to Programming with Python
15
Specifying an Exception Type
try:
num = float(raw_input("\nEnter a number: "))
except(ValueError):
print "That was not a number!“
 Different types of errors raise different types of
exceptions
 except clause can specify exception types to handle
 Attempt to convert "Hi!" to float raises ValueError
exception
 Good programming practice to specify exception
types to handle each individual case
 Avoid general, catch-all exception handling
Guide to Programming with Python
16
Selected Exception Types
Table 7.5: Selected exception types
Guide to Programming with Python
17
Handling Multiple Exception Types
for value in (None, "Hi!"):
try:
print "Attempting to convert", value, "–>",
print float(value)
except(TypeError, ValueError):
print "Something went wrong!“
 Can trap for multiple exception types
 Can list different exception types in a single except
clause
 Code will catch either TypeError or ValueError
exceptions
Guide to Programming with Python
18
Handling Multiple Exception Types
(continued)
for value in (None, "Hi!"):
try:
print "Attempting to convert", value, "–>",
print float(value)
except(TypeError):
print "Can only convert string or number!"
except(ValueError):
print "Can only convert a string of digits!"
 Another method to trap for multiple exception types
is multiple except clauses after single try
 Each except clause can offer specific code for each
individual exception type
Guide to Programming with Python
19
Getting an Exception’s Argument
try:
num = float(raw_input("\nEnter a number: "))
except(ValueError), e:
print "Not a number! Or as Python would say\n", e
 Exception may have an argument, usually
message describing exception
 Get the argument if a variable is listed before the
colon in except statement
Guide to Programming with Python
20
Adding an else Clause
try:
num = float(raw_input("\nEnter a number: "))
except(ValueError):
print "That was not a number!"
else:
print "You entered the number", num
 Can add single else clause after all except clauses
 else block executes only if no exception is raised
 num printed only if assignment statement in the try
block raises no exception
Guide to Programming with Python
handle_it.py
21
Summary (Files)
 How do you open a file?
file = open(file_name, mode)
 How do you close a file?
file.close()
 How do you read all the characters from a line in a file?
the_string = file.readline()
 How do you read all the lines from a file into a list?
the_list = file.readlines()
 How do you loop through a file?
for aline in file:
 How do you write text to a file?
file.write(the_text)
 How do you write a list of strings to a file?
file.writelines(the_list)
Guide to Programming with Python
22
Summary (Exceptions)
 What is an exception (in Python)?
– an error that occurs during the execution of a program
 How do you section off code that could raise an exception
(and provide code to be run in case of an exception)?
– try / except(SpecificException) / else
 If an exception has an argument, what does it usually
contain?
– a message describing the exception
 Within a try block, how can you execute code if no
exception is raised?
– else:
Guide to Programming with Python
23
Using Modules: os & sys
 The ‘os’ module provides functions for interacting
with the operating system
– Ref: http://www.networktheory.co.uk/docs/pytut/OperatingSystemInterface.html
– http://docs.python.org/library/os.html
– os.getcwd() # Return the current working directory
– os.chdir() #change the working directory
– os.path.exists('/usr/local/bin/python')
– os.path.isfile(‘test.txt’)
– os.listdir(os.getcwd()) #get a list of the file in current directory
 The ‘sys’ module: System-specific parameters
and functions
– Ref: http://docs.python.org/library/sys.html
– sys.argv #The list of command line arguments passed to a Python script
– sys.exit([arg]) #exit from python
24
Web crawler
 urllib
 urlretrieve(url[, filename[, reporthook[, data]]])
 urllib.urlretrieve(“http://www.google.com”,
“google.html”)
Guide to Programming with Python
25