Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 8 Text Files We have, up to now, been storing data only in the variables and data structures of programs. However, such data is not available.

Similar presentations


Presentation on theme: "Chapter 8 Text Files We have, up to now, been storing data only in the variables and data structures of programs. However, such data is not available."— Presentation transcript:

1 Chapter 8 Text Files We have, up to now, been storing data only in the variables and data structures of programs. However, such data is not available once a program terminates. Therefore, in order for information to persist from one program execution to the next, the data must be stored in a data file. In this chapter we discuss the use of one particular type of data file, text files. Introduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons

2 Types of Storage Technology
Introduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons

3 What is a Text File? A text file is a file containing characters, structured as lines of text. Text files contain the nonprinting newline character, \n. Thus, text files can be directly viewed and created using a text editor. In contrast, binary files can contain various types of data, such as numerical values, and are therefore not structured as lines of text. Such files can only be read and written via a computer program. Any attempt to directly view a binary file will result in “garbled” characters on the screen. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.1 What is a Text File?

4 Using Text Files Fundamental operations of all types of files include opening a file, reading from a file, writing to a file, and closing a file. Next we discuss each of these operations when using text files in Python. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

5 Opening for Reading To open a file for reading, the built-in open function is used as shown, The first argument is the file name to be opened, 'myfile.txt'. The second argument, 'r', indicates that the file is to be opened for reading. (The second argument is optional when opening a file for reading.) If the file is successfully opened, a file object is created and assigned to the provided identifier, in this case identifier input_file. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

6 If the file name does not exist, then the program will terminate with a “no such file or directory” error. This error can also occur if the file name is not found in the location looked for (uppercase and lowercase letters are treated the same for file names). Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

7 When a file is opened, it is first searched for in the same folder/directory that the program resides in. The programs in the text are written this way. However, an alternate location can be specified in the call to open by providing a path to the file, In this case, the file is searched for in a subdirectory called data of the directory in which the program is contained. Thus, its location is relative to the program location. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

8 Absolute paths can also be provided giving the location of a file anywhere in the file system,
Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

9 When the program has finished reading the file, it should be closed by calling the close method on the file object, Once closed, the file may be reopened (with reading starting at the beginning of the file) by the same or anotherprogram. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

10 To open a file for writing, the open function is used as shown below,
Opening for Writing To open a file for writing, the open function is used as shown below, The first argument is the file name to be opened, 'myfile.txt'. The second argument, ‘w', indicates that the file is to be opened for writing. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

11 Reading Text Files The readline method returns as a string the next line of a text file, including the end-of-line character, \n. When the end-of-file is reached, it returns an empty string Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

12 Reading from a Text File
Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

13 input_file = open('myfile.txt','r')
It is also possible to read the lines of a file by use of the for statement, input_file = open('myfile.txt','r') for line in input_file: Using a for statement, all lines of the file will be read one by one. Using a while loop, however, lines can be read until a given value is found. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

14 Writing Text Files The write method is used to write strings to a file. Writing to a Text File Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

15 Finally, when writing to a file, data is first placed in an area of memory called a buffer. Only when the buffer becomes full is the data actually written to the file. (This makes reading and writing files more efficient.) Since the last lines written may not completely fill the buffer, the last buffer’s worth of data may not be written. The close() method flushes the buffer to force the buffer to be written to the file. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

16 Let’s Try It Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.2 Using Text Files

17 String Processing The information in a text file, as with all information, is most likely going to be searched, analyzed, and/or updated. Collectively, the operations performed on strings is called string processing. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

18 String Traversal We saw in Chapter 4 how any sequence can be traversed, including strings. This is usually done by the use of a for loop. For example, if we want to read a line of a text file and determine the number of blank characters it contains, we could do the following. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

19 We also saw that the traversal can be done more simply without the explicit use of an index variable, Given the ability to traverse a string, each character can be individually “looked at” for various types of string processing. We look at some string processing operations next. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

20 String-Applicable Sequence Operations
Because strings (unlike lists) are immutable, sequence-modifying operations are not applicable to strings. For example, one cannot add, delete, or replace characters of a string. Therefore, all string operations that “modify” a string return a new string that is a modified version of the original string. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

21 Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

22 String Methods There are a number of methods specific to strings in addition to the general sequence operations. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

23 Checking the Contents of a String
There are times when the individual characters in a string (or substring) need to be checked. For example, to check whether a character is an appropriate denotation of a musical note, we could do the following, Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

24 Since the in operator can also be applied to strings, we can also do the following,
We could take a similar approach for determining if a given character is a lowercase or uppercase letter or digit character, Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

25 Since checking for uppercase/lowercase and digit characters is common in programming, Python provides string methods isalpha, isdigit, isupper, and islower (among others). For example, to perform error checking on an entered credit card number could be done as follows, The method isdigit returns True if and only if each character in string credit_card is a digit. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

26 If only part of a string is to be checked, then a method can be applied to a slice of a string. For example, if the part numbers of a given company all begin with three letters, a check for invalid part numbers could be done as follows, in which isalpha returns True if and only if the first three characters in part_num are letters. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

27 Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

28 Searching and Modifying Strings
String processing involves search. For example, to determine the user name and domain parts of an address, the ampersand character separating the two would be searched for. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

29 The find method returns the index location of the first occurrence of a specified substring. Since in Python strings are immutable, to update the address, a new string would be constructed with the desired replacement as shown. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

30 The replace method produces a new string with every occurrence of a given substring within the original string replaced with another. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

31 Python also provides a strip method that “strips off” leading and trailing characters from a string. This is especially useful for stripping off the newline character, \n, from the end of a line in text processing if needed. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.3 String Processing

32 What is an Exception? An exception is a value (object) that is raised (“thrown”) signaling that an unexpected, or “exceptional,” situation has occurred. Python contains a predefined set of exceptions referred to as standard exceptions. We list some of the standard exceptions. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

33 Some Standard Exceptions in Python
Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

34 The Propagation of Raised Exceptions
Raised exceptions are not required to be handled in Python. When an exception is raised and not handled by the client code, it is automatically propagated back to the client’s calling code (and its calling code, etc.) until handled. If an exception is thrown all the way back to the top level (main module) and not handled, then the program terminates and displays the details of the exception. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

35 The Propagation of Raised Exceptions
Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

36 Catching and Handling Exceptions
Many of the functions in the Python Standard Library raise exceptions. For example, the factorial function of the Python math module raises a ValueError exception when a negative value is passed to it. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

37 When -5 is passed to the factorial function, an exception is raised, thrown back to the client code to catch and handle. Since the client code (in the main module) does not attempt to catch the exception, the exception is caught by the Python interpreter, causing the program to terminate and display an error message indicating the exception type. The last line of the message indicates that a ValueError exception occurred within the factorial function. The previous lines indicate where in the client code this function was called (line 4). Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

38 Here is a version of the program that recovers from the exception
Here is a version of the program that recovers from the exception. Rather than terminating the program, the user is prompted again for input so that the program can continue executing. Note that within a try suite in Python, any statement making a call (either directly or indirectly) to a function that raises an exception causes the rest of the statements in the suite to be skipped, as depicted in the figure. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

39 Exception Handling and User Input
Besides exceptions raised by built-in functions, programmer-defined functions may raise exceptions as well. Suppose we prompted the user to enter the current month as a number, Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

40 The input function will return whatever is entered as a string
The input function will return whatever is entered as a string. We can do integer type conversion on this value to make it an integer type, If the input string contained non-digit characters (except for + and -), the int conversion function would raise a ValueError exception. However, there also needs to be a check for values outside the range 1–12. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

41 This is not an elegant piece of code
This is not an elegant piece of code. A better approach is to design a function called getMonth that raises a ValueError exception for either error condition—if the user enters non-digit characters, or if the user enters a numeric value outside the range 1–12. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

42 Exception Handling and File Processing
We saw that when opening a file for reading, an exception is raised if the file cannot be found. In this case, the standard IOError exception is raised and the program terminates with a 'No such file or directory' error message. We can catch this exception and handle such an error . Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

43 Variable file_name stores the file name entered by the user
Variable file_name stores the file name entered by the user. Variable input_file_opened is initialized to False - the while loop continues to iterate until it becomes True. Every time that open(file_name, 'r') raises an exception, the remaining lines in the try block are skipped, and the exception handler following the except header is executed. Only when the call to open does not throw an exception do all the instructions in the try block get executed, with the program continuing after the while loop. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

44 A similar, but much less likely exception can be raised when opening a file for writing and the file system (hard disk, for example) we want to write to is full. Note that when reading from a text file, the readline method does not raise any exceptions. When the end of file is reached, readline returns an empty string rather than throwing an exception. Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

45 Word Frequency Count Program
Let’s Apply It Word Frequency Count Program The following Python program prompts the user for the name of a text file to open and a word to search for, and displays the number of times that the word occurs within the file. This program utilizes the following Python programming features: ► text files / readline() ► string methods lower(), index() Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

46 Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

47 Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling

48 Intoduction to Computer Science Using Python – Dierbach Copyright 2013 John Wiley and Sons Section 8.4 Exception Handling


Download ppt "Chapter 8 Text Files We have, up to now, been storing data only in the variables and data structures of programs. However, such data is not available."

Similar presentations


Ads by Google