You are previewing Think Python.

Think Python

Cover of Think Python by Allen B. Downey Published by O'Reilly Media, Inc.
  1. Think Python
  2. SPECIAL OFFER: Upgrade this ebook with O’Reilly
  3. Preface
    1. The Strange History of This Book
    2. Acknowledgments
    3. Contributor List
  4. 1. The Way of the Program
    1. The Python Programming Language
    2. What Is a Program?
    3. What Is Debugging?
    4. Syntax Errors
    5. Runtime Errors
    6. Semantic Errors
    7. Experimental Debugging
    8. Formal and Natural Languages
    9. The First Program
    10. Debugging
    11. Glossary
    12. Exercises
  5. 2. Variables, Expressions, and Statements
    1. Values and Types
    2. Variables
    3. Variable Names and Keywords
    4. Operators and Operands
    5. Expressions and Statements
    6. Interactive Mode and Script Mode
    7. Order of Operations
    8. String Operations
    9. Comments
    10. Debugging
    11. Glossary
    12. Exercises
  6. 3. Functions
    1. Function Calls
    2. Type Conversion Functions
    3. Math Functions
    4. Composition
    5. Adding New Functions
    6. Definitions and Uses
    7. Flow of Execution
    8. Parameters and Arguments
    9. Variables and Parameters Are Local
    10. Stack Diagrams
    11. Fruitful Functions and Void Functions
    12. Why Functions?
    13. Importing with from
    14. Debugging
    15. Glossary
    16. Exercises
  7. 4. Case Study: Interface Design
    1. TurtleWorld
    2. Simple Repetition
    3. Exercises
    4. Encapsulation
    5. Generalization
    6. Interface Design
    7. Refactoring
    8. A Development Plan
    9. Docstring
    10. Debugging
    11. Glossary
    12. Exercises
  8. 5. Conditionals and Recursion
    1. Modulus Operator
    2. Boolean Expressions
    3. Logical Operators
    4. Conditional Execution
    5. Alternative Execution
    6. Chained Conditionals
    7. Nested Conditionals
    8. Recursion
    9. Stack Diagrams for Recursive Functions
    10. Infinite Recursion
    11. Keyboard Input
    12. Debugging
    13. Glossary
    14. Exercises
  9. 6. Fruitful Functions
    1. Return Values
    2. Incremental Development
    3. Composition
    4. Boolean Functions
    5. More Recursion
    6. Leap of Faith
    7. One More Example
    8. Checking Types
    9. Debugging
    10. Glossary
    11. Exercises
  10. 7. Iteration
    1. Multiple Assignment
    2. Updating Variables
    3. The while Statement
    4. break
    5. Square Roots
    6. Algorithms
    7. Debugging
    8. Glossary
    9. Exercises
  11. 8. Strings
    1. A String Is a Sequence
    2. len
    3. Traversal with a for Loop
    4. String Slices
    5. Strings Are Immutable
    6. Searching
    7. Looping and Counting
    8. String Methods
    9. The in Operator
    10. String Comparison
    11. Debugging
    12. Glossary
    13. Exercises
  12. 9. Case Study: Word Play
    1. Reading Word Lists
    2. Exercises
    3. Search
    4. Looping with Indices
    5. Debugging
    6. Glossary
    7. Exercises
  13. 10. Lists
    1. A List Is a Sequence
    2. Lists Are Mutable
    3. Traversing a List
    4. List Operations
    5. List Slices
    6. List Methods
    7. Map, Filter, and Reduce
    8. Deleting Elements
    9. Lists and Strings
    10. Objects and Values
    11. Aliasing
    12. List Arguments
    13. Debugging
    14. Glossary
    15. Exercises
  14. 11. Dictionaries
    1. Dictionary as a Set of Counters
    2. Looping and Dictionaries
    3. Reverse Lookup
    4. Dictionaries and Lists
    5. Memos
    6. Global Variables
    7. Long Integers
    8. Debugging
    9. Glossary
    10. Exercises
  15. 12. Tuples
    1. Tuples Are Immutable
    2. Tuple Assignment
    3. Tuples as Return Values
    4. Variable-Length Argument Tuples
    5. Lists and Tuples
    6. Dictionaries and Tuples
    7. Comparing Tuples
    8. Sequences of Sequences
    9. Debugging
    10. Glossary
    11. Exercises
  16. 13. Case Study: Data Structure Selection
    1. Word Frequency Analysis
    2. Random Numbers
    3. Word Histogram
    4. Most Common Words
    5. Optional Parameters
    6. Dictionary Subtraction
    7. Random Words
    8. Markov Analysis
    9. Data Structures
    10. Debugging
    11. Glossary
    12. Exercises
  17. 14. Files
    1. Persistence
    2. Reading and Writing
    3. Format Operator
    4. Filenames and Paths
    5. Catching Exceptions
    6. Databases
    7. Pickling
    8. Pipes
    9. Writing Modules
    10. Debugging
    11. Glossary
    12. Exercises
  18. 15. Classes and Objects
    1. User-Defined Types
    2. Attributes
    3. Rectangles
    4. Instances as Return Values
    5. Objects Are Mutable
    6. Copying
    7. Debugging
    8. Glossary
    9. Exercises
  19. 16. Classes and Functions
    1. Time
    2. Pure Functions
    3. Modifiers
    4. Prototyping Versus Planning
    5. Debugging
    6. Glossary
    7. Exercises
  20. 17. Classes and Methods
    1. Object-Oriented Features
    2. Printing Objects
    3. Another Example
    4. A More Complicated Example
    5. The init Method
    6. The __str__ Method
    7. Operator Overloading
    8. Type-Based Dispatch
    9. Polymorphism
    10. Debugging
    11. Interface and Implementation
    12. Glossary
    13. Exercises
  21. 18. Inheritance
    1. Card Objects
    2. Class Attributes
    3. Comparing Cards
    4. Decks
    5. Printing the Deck
    6. Add, Remove, Shuffle, and Sort
    7. Inheritance
    8. Class Diagrams
    9. Debugging
    10. Data Encapsulation
    11. Glossary
    12. Exercises
  22. 19. Case Study: Tkinter
    1. GUI
    2. Buttons and Callbacks
    3. Canvas Widgets
    4. Coordinate Sequences
    5. More Widgets
    6. Packing Widgets
    7. Menus and Callables
    8. Binding
    9. Debugging
    10. Glossary
    11. Exercises
  23. A. Debugging
    1. Syntax Errors
      1. I Keep Making Changes and It Makes No Difference
    2. Runtime Errors
      1. My Program Does Absolutely Nothing
      2. My Program Hangs
      3. When I Run the Program, I Get an Exception
      4. I Added So Many Print Statements I Get Inundated with Output
    3. Semantic Errors
      1. My Program Doesn’t Work
      2. I’ve Got a Big Hairy Expression and It Doesn’t Do What I Expect
      3. I’ve Got a Function or Method That Doesn’t Return What I Expect
      4. I’m Really, Really Stuck and I Need Help
      5. No, I Really Need Help
  24. B. Analysis of Algorithms
    1. Order of Growth
    2. Analysis of Basic Python Operations
    3. Analysis of Search Algorithms
    4. Hashtables
  25. C. Lumpy
    1. State Diagram
    2. Stack Diagram
    3. Object Diagrams
    4. Function and Class Objects
    5. Class Diagrams
  26. Index
  27. About the Author
  28. Colophon
  29. SPECIAL OFFER: Upgrade this ebook with O’Reilly
  30. Copyright
O'Reilly logo

Chapter 14. Files

Persistence

Most of the programs we have seen so far are transient in the sense that they run for a short time and produce some output, but when they end, their data disappears. If you run the program again, it starts with a clean slate.

Other programs are persistent: they run for a long time (or all the time); they keep at least some of their data in permanent storage (a hard drive, for example); and if they shut down and restart, they pick up where they left off.

Examples of persistent programs are operating systems, which run pretty much whenever a computer is on, and web servers, which run all the time, waiting for requests to come in on the network.

One of the simplest ways for programs to maintain their data is by reading and writing text files. We have already seen programs that read text files; in this chapter we will see programs that write them.

An alternative is to store the state of the program in a database. In this chapter I will present a simple database and a module, pickle, that makes it easy to store program data.

Reading and Writing

A text file is a sequence of characters stored on a permanent medium like a hard drive, flash memory, or CD-ROM. We saw how to open and read a file in Reading Word Lists.

To write a file, you have to open it with mode 'w' as a second parameter:

>>> fout = open('output.txt', 'w')
>>> print fout
<open file 'output.txt', mode 'w' at 0xb7eb2410>

If the file already exists, opening it in write mode clears out the old data and starts ...

The best content for your career. Discover unlimited learning on demand for around $1/day.