Presentation is loading. Please wait.

Presentation is loading. Please wait.

Guide to Programming with Python Chapter Seven Files and Exceptions: The Trivia Challenge Game.

Similar presentations


Presentation on theme: "Guide to Programming with Python Chapter Seven Files and Exceptions: The Trivia Challenge Game."— Presentation transcript:

1 Guide to Programming with Python Chapter Seven Files and Exceptions: The Trivia Challenge Game

2 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 Python2

3 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 Python3

4 Opening and Closing a Text File text_file = open("read_it.txt", "r") 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 Python4 1 st argument: filename 2 nd argument: access mode File object

5 File Access Modes Files can be opened for reading, writing, or both. Guide to Programming with Python5

6 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 Python6

7 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 Python7

8 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 Python8

9 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 Python9

10 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

11 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”)  write() file object method writes new characters to file open for writing 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 Python11

12 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 Python12

13 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

14 Handling Exceptions >>> 1/0 Traceback (most recent call last): File " ", line 1, in -toplevel- 1/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 Python14

15 Using a try Statement with an except Clause try: num = float(raw_input("Enter a number: ")) except: print "Something went wrong!"  try statement sections off code that could raise exception  Instead of raising exception, except block run  If no exception raised, except block skipped Guide to Programming with Python15

16 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 Python16

17 Selected Exception Types Table 7.5: Selected exception types Guide to Programming with Python17

18 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 Python18

19 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 Python19

20 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 Python20

21 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 Python21 handle_it.py

22 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 Python22

23 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 Python23

24 Using Modules: os & sys  The ‘os’ module provides functions for interacting with the operating system –Ref: http://www.network- theory.co.uk/docs/pytut/OperatingSystemInterface.htmlhttp://www.network- theory.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


Download ppt "Guide to Programming with Python Chapter Seven Files and Exceptions: The Trivia Challenge Game."

Similar presentations


Ads by Google