Beginners Python Cheat Sheet PCC Files Exceptions PDF
The document discusses various techniques for working with files in Python, including opening, reading from, writing to, appending to, and handling exceptions when working with files. Specifically, it covers:
1) Opening files using absolute and relative paths, and on different operating systems.
2) Reading the entire contents of a file at once or line by line.
3) Writing to new files or appending to existing files.
4) Handling common exceptions like FileNotFoundError and ZeroDivisionError that may occur when working with files.
5) Using try/except blocks to gracefully handle errors instead of crashing.
Beginners Python Cheat Sheet PCC Files Exceptions PDF
The document discusses various techniques for working with files in Python, including opening, reading from, writing to, appending to, and handling exceptions when working with files. Specifically, it covers:
1) Opening files using absolute and relative paths, and on different operating systems.
2) Reading the entire contents of a file at once or line by line.
3) Writing to new files or appending to existing files.
4) Handling common exceptions like FileNotFoundError and ZeroDivisionError that may occur when working with files.
5) Using try/except blocks to gracefully handle errors instead of crashing.
Windows will sometimes interpret forward slashes incorrectly. If print(line.rstrip()) you run into this, use backslashes in your file paths. f_path = "C:\Users\ehmatthes\books\alice.txt" Your programs can read information in from files, and Passing the 'w' argument to open() tells Python you want to they can write data to files. Reading from files allows with open(f_path) as f_obj: write to the file. Be careful; this will erase the contents of lines = f_obj.readlines() you to work with a wide variety of information; writing the file if it already exists. Passing the 'a' argument tells to files allows users to pick up where they left off the Python you want to append to the end of an existing file. next time they run your program. You can write text to files, and you can store Python structures such as Writing to an empty file When you think an error may occur, you can write a try- lists in data files. filename = 'programming.txt' except block to handle the exception that might be raised. The try block tells Python to try running some code, and the with open(filename, 'w') as f: except block tells Python what to do if the code results in a Exceptions are special objects that help your f.write("I love programming!") particular kind of error. programs respond to errors in appropriate ways. For example if your program tries to open a file that Writing multiple lines to an empty file Handling the ZeroDivisionError exception doesnt exist, you can use exceptions to display an try: informative error message instead of having the filename = 'programming.txt' print(5/0) program crash. except ZeroDivisionError: with open(filename, 'w') as f: f.write("I love programming!\n") print("You can't divide by zero!") f.write("I love creating new games.\n") Handling the FileNotFoundError exception To read from a file your program needs to open the file and Appending to a file f_name = 'siddhartha.txt' then read the contents of the file. You can read the entire contents of the file at once, or read the file line by line. The filename = 'programming.txt' with statement makes sure the file is closed properly when try: the program has finished accessing the file. with open(filename, 'a') as f: with open(f_name) as f_obj: f.write("I also love working with data.\n") lines = f_obj.readlines() Reading an entire file at once f.write("I love making apps as well.\n") except FileNotFoundError: filename = 'siddhartha.txt' msg = "Can't find file {0}.".format(f_name) print(msg) with open(filename) as f_obj: contents = f_obj.read() When Python runs the open() function, it looks for the file in the same directory where the program that's being excuted is stored. You can open a file from a subfolder using a It can be hard to know what kind of exception to handle print(contents) when writing code. Try writing your code without a try block, relative path. You can also use an absolute path to open Reading line by line any file on your system. and make it generate an error. The traceback will tell you Each line that's read from the file has a newline character at the what kind of exception your program needs to handle. end of the line, and the print function adds its own newline Opening a file from a subfolder character. The rstrip() method gets rid of the the extra blank lines this would result in when printing to the terminal. f_path = "text_files/alice.txt"
filename = 'siddhartha.txt' with open(f_path) as f_obj:
lines = f_obj.readlines() Covers Python 3 and Python 2 with open(filename) as f_obj: for line in f_obj: for line in lines: print(line.rstrip()) print(line.rstrip()) The try block should only contain code that may cause an Sometimes you want your program to just continue running The json module allows you to dump simple Python data error. Any code that depends on the try block running when it encounters an error, without reporting the error to structures into a file, and load the data from that file the successfully should be placed in the else block. the user. Using the pass statement in an else block allows next time the program runs. The JSON data format is not you to do this. specific to Python, so you can share this kind of data with Using an else block people who work in other languages as well. Using the pass statement in an else block print("Enter two numbers. I'll divide them.") f_names = ['alice.txt', 'siddhartha.txt', Knowing how to manage exceptions is important when x = input("First number: ") 'moby_dick.txt', 'little_women.txt'] working with stored data. You'll usually want to make sure y = input("Second number: ") the data you're trying to load exists before working with it. for f_name in f_names: Using json.dump() to store data try: # Report the length of each file found. result = int(x) / int(y) try: """Store some numbers.""" except ZeroDivisionError: with open(f_name) as f_obj: print("You can't divide by zero!") lines = f_obj.readlines() import json else: except FileNotFoundError: print(result) # Just move on to the next file. numbers = [2, 3, 5, 7, 11, 13] pass Preventing crashes from user input else: filename = 'numbers.json' Without the except block in the following example, the program with open(filename, 'w') as f_obj: num_lines = len(lines) would crash if the user tries to divide by zero. As written, it will handle the error gracefully and keep running. msg = "{0} has {1} lines.".format( json.dump(numbers, f_obj) f_name, num_lines) """A simple calculator for division only.""" print(msg) Using json.load() to read data """Load some previously stored numbers.""" print("Enter two numbers. I'll divide them.") print("Enter 'q' to quit.") import json Exception-handling code should catch specific exceptions while True: that you expect to happen during your program's execution. filename = 'numbers.json' x = input("\nFirst number: ") A bare except block will catch all exceptions, including with open(filename) as f_obj: if x == 'q': keyboard interrupts and system exits you might need when numbers = json.load(f_obj) break forcing a program to close. y = input("Second number: ") print(numbers) if y == 'q': If you want to use a try block and you're not sure which break exception to catch, use Exception. It will catch most Making sure the stored data exists exceptions, but still allow you to interrupt programs intentionally. import json try: result = int(x) / int(y) Dont use bare except blocks f_name = 'numbers.json' except ZeroDivisionError: print("You can't divide by zero!") try: try: else: # Do something with open(f_name) as f_obj: print(result) except: numbers = json.load(f_obj) pass except FileNotFoundError: Use Exception instead msg = "Cant find {0}.".format(f_name) Well-written, properly tested code is not very prone to print(msg) try: else: internal errors such as syntax or logical errors. But every # Do something time your program depends on something external such as print(numbers) except Exception: user input or the existence of a file, there's a possibility of pass an exception being raised. Practice with exceptions Printing the exception Take a program you've already written that prompts for user It's up to you how to communicate errors to your users. input, and add some error-handling code to the program. Sometimes users need to know if a file is missing; try: sometimes it's better to handle the error silently. A little # Do something except Exception as e: More cheat sheets available at experience will help you know how much to report. print(e, type(e))