Free Ebook cover Automating Everyday Tasks with Python

Automating Everyday Tasks with Python

New course

100 pages

Reading and Writing Files with Python

Capítulo 8

Estimated reading time: 7 minutes

+ Exercise
Audio Icon

Listen in audio

0:00 / 0:00

Reading and Writing Files with Python

One of the most common tasks in programming is working with files. Whether it's reading data from a file, writing data to a file, or modifying existing files, Python provides a powerful set of tools to handle these operations efficiently. In this section, we will explore how to read from and write to files using Python, covering various file types and techniques to make your file operations seamless and effective.

Understanding File Operations

Before diving into the specifics of file handling in Python, it's essential to understand the basic file operations. Typically, file operations involve the following steps:

  1. Opening a file: This step involves accessing the file you want to work with. Python provides the open() function, which is used to open a file in a specific mode (read, write, append, etc.).
  2. Reading or writing: Once a file is opened, you can perform the desired operation, whether it's reading the contents, writing new data, or appending to the existing content.
  3. Closing the file: After completing the file operations, it's crucial to close the file to free up system resources. This is done using the close() method.

Opening Files

In Python, the open() function is used to open a file. The function requires at least one argument: the file name. Optionally, you can specify the mode in which the file should be opened. Here are the most commonly used modes:

  • 'r': Open for reading (default).
  • 'w': Open for writing, truncating the file first.
  • 'a': Open for writing, appending to the end of the file if it exists.
  • 'b': Binary mode.
  • 't': Text mode (default).
  • 'x': Open for exclusive creation, failing if the file already exists.

For example, to open a file named example.txt for reading, you would use:

file = open('example.txt', 'r')

Reading Files

Python provides several methods to read the contents of a file once it's opened. The most commonly used methods are:

Continue in our app.

You can listen to the audiobook with the screen off, receive a free certificate for this course, and also have access to 5,000 other free online courses.

Or continue reading below...
Download App

Download the app

  • read(size=-1): Reads the entire file or up to size bytes if specified.
  • readline(size=-1): Reads a single line from the file or up to size bytes if specified.
  • readlines(): Reads all lines in the file and returns them as a list of strings.

Here's an example of reading a file line by line:


with open('example.txt', 'r') as file:
    for line in file:
        print(line.strip())

Using the with statement is a best practice in Python file handling as it ensures that the file is properly closed after its suite finishes, even if an exception is raised.

Writing Files

Writing to a file in Python is straightforward. You can use the write() method to write a string to a file. If you need to write multiple lines, you can use writelines(), which takes a list of strings.

Here's how you can write to a file:


with open('output.txt', 'w') as file:
    file.write('Hello, World!\n')
    file.writelines(['Line 1\n', 'Line 2\n', 'Line 3\n'])

Using the 'w' mode truncates the file if it already exists. If you want to append to the file instead, use the 'a' mode.

Working with Binary Files

Besides text files, Python can also handle binary files, which contain data not meant to be human-readable. To work with binary files, you need to open the file in binary mode by adding a 'b' to the mode string.

Here's an example of reading a binary file:


with open('image.png', 'rb') as binary_file:
    data = binary_file.read()
    print(data[:10])  # Print the first 10 bytes

Similarly, you can write binary data to a file using 'wb' mode:


with open('output.bin', 'wb') as binary_file:
    binary_file.write(b'\x00\x01\x02\x03\x04\x05')

File Paths and Directories

When working with files, you often need to specify paths. Python provides the os and pathlib modules to handle file paths and directories effectively. The os module provides functions for interacting with the operating system, while pathlib offers an object-oriented approach to filesystem paths.

Here's how you can use these modules:


import os
from pathlib import Path

# Using os module
current_directory = os.getcwd()
print('Current Directory:', current_directory)

# Using pathlib module
path = Path('example.txt')
print('File Exists:', path.exists())

Handling Exceptions

File operations can sometimes result in errors, such as trying to read a non-existent file or lacking permissions to write to a file. Python provides a robust exception handling mechanism to manage such scenarios gracefully.

Here's an example of handling exceptions while reading a file:


try:
    with open('non_existent_file.txt', 'r') as file:
        content = file.read()
except FileNotFoundError:
    print('File not found.')
except IOError:
    print('An I/O error occurred.')

Conclusion

Reading and writing files in Python is a fundamental skill that can significantly enhance your ability to automate tasks and process data. By understanding the basic file operations, using context managers, and handling exceptions, you can manage files efficiently and avoid common pitfalls. Whether you're working with text or binary files, Python's comprehensive file handling capabilities provide the tools you need to manipulate files effectively.

As you continue to explore Python, you'll find that file handling is just the beginning. With Python's extensive libraries and modules, you can automate a wide range of everyday tasks, from data analysis to web scraping, making your workflow more efficient and productive.

Now answer the exercise about the content:

What is the best practice in Python for ensuring a file is properly closed after operations are completed?

You are right! Congratulations, now go to the next page

You missed! Try again.

The with statement is the best practice for file handling in Python because it automatically handles closing the file, ensuring that system resources are released promptly even if an exception occurs. This eliminates the need to manually close the file, reducing the risk of bugs and maintaining cleaner code.

Next chapter

Batch Renaming Files

Arrow Right Icon
Download the app to earn free Certification and listen to the courses in the background, even with the screen off.