Chapter 5: File Handling In Python

Python File Handling
Python File Handling

Python, an intuitive and powerful programming language, provides built-in support for file handling. In this post, we will explore how to perform various file operations such as reading, writing, and appending, with a detailed example from the domain of automotive software testing.

Basics Of File Handling

Python’s built-in functions for file handling include open(), read(), write(), close(), and many more. To open a file, you can use the open() function, which takes the file path as a parameter. Once a file is opened, you can read its contents with read(), write to it with write(), or append content with write() when the file is opened in append mode. Once done, it’s important to close the file using close() to free up system resources.

Here’s a simple example:

# Open a file
file = open('myfile.txt', 'w')  # 'w' stands for write mode

# Write to the file
file.write('Hello, World!')

# Close the file
file.close()

Reading File

Reading a file in Python is quite straightforward. The built-in open function is used, along with the read method. This opens the file and reads its contents into a string.

In an automotive software testing context, imagine you have a file that contains test cases for different systems of a vehicle. Let’s say this file is named test_cases.txt and it contains the following:

Brake System: Test ABS functionality
Engine System: Test fuel injection efficiency
Transmission System: Test gear shifts at high RPM

You want to read these test cases into your Python script to execute them. Here is how you could do it:

# Open the file in read mode ('r')
with open('test_cases.txt', 'r') as file:
    # Read the entire file
    content = file.read()

print(content)

When you run this script, it will output:

Brake System: Test ABS functionality
Engine System: Test fuel injection efficiency
Transmission System: Test gear shifts at high RPM

The with statement is used here to ensure the file is properly closed after it is no longer needed.

If you’d like to read the file line by line, you can use a loop with the readline method:

# Open the file in read mode ('r')
with open('test_cases.txt', 'r') as file:
    # Read the file line by line
    line = file.readline()
    while line:
        print(line, end='')
        line = file.readline()

This script will output the same result as the previous one, but it reads the file line by line instead of all at once. This can be useful when working with large files that cannot be loaded entirely into memory.

The above examples demonstrate how you can easily read a file in Python, which can be quite handy for tasks like loading test cases in automotive software testing.

Writing File

Writing to a file in Python is also a simple task, facilitated by the built-in open function and the write method.

In the context of automotive software testing, imagine you have test results from different systems of a vehicle that you want to record in a text file for later review.

Here is a Python script that writes these test results to a file:

# Assume we have a dictionary with the test results
test_results = {
    "Brake System": "Pass",
    "Engine System": "Fail",
    "Transmission System": "Pass",
}

# Open the file in write mode ('w')
with open('test_results.txt', 'w') as file:
    # Write the test results to the file
    for system, result in test_results.items():
        file.write(f'{system}: {result}\n')

In this script, we first define a dictionary test_results with the results of our tests. We then open a file named test_results.txt in write mode using the with open() as construct, which will automatically close the file when we’re done with it. For each test result, we write the system name and its result to the file.

When this script is run, it creates a file named test_results.txt with the following content:

Brake System: Pass
Engine System: Fail
Transmission System: Pass

Note that opening a file in write mode (‘w’) will overwrite any existing content in the file. If you want to add content to an existing file without deleting its current content, you should open the file in append mode (‘a’) instead.

This example illustrates how you can write to a file in Python, which is very useful for recording test results or other data in the field of automotive software testing.

File modes and file objects

When working with files in Python, the open() function is used to open a file and return a file object, which can then be used to read from, write to, or perform other operations on the file. The open() function takes two main parameters: the name (or path) of the file, and the mode in which to open the file.

The mode in which a file is opened determines the operations that can be performed on the file. Here are the main file modes in Python:

‘r’ – Read mode: In this mode, the file is only read and not written to. This is the default mode when not specified.

‘w’ – Write mode: In this mode, the file is opened for writing. If the file already exists, its contents are truncated. If it does not exist, a new file is created.

‘a’ – Append mode: This mode is also for writing, but data is appended to the end of the file instead of overwriting existing content.

‘x’ – Exclusive creation mode: In this mode, a new file is created, but if the file already exists, the operation fails.

‘b’ – Binary mode: This mode is used for binary files (e.g., images, executable files).

‘t’ – Text mode: This mode is used for text files. This is the default mode if not specified.

You can also combine modes, such as ‘rb’ for reading in binary mode or ‘w+’ for reading and writing.

Now, let’s see an example from automotive software testing. Suppose you have a list of test cases that you want to write to a file. After running the tests, you want to append the results to the same file. Here is how you could do it:

# Test cases to be written to the file
test_cases = ['Brake System Test', 'Engine System Test', 'Transmission System Test']

# Open the file in write mode ('w')
with open('test_cases.txt', 'w') as file:
    # Write each test case on a new line
    for test in test_cases:
        file.write(test + '\n')

# Assume we have test results as a list of strings
test_results = ['Brake System Test: Pass', 'Engine System Test: Fail', 'Transmission System Test: Pass']

# Open the file in append mode ('a') to add the test results
with open('test_cases.txt', 'a') as file:
    # Write each test result on a new line
    for result in test_results:
        file.write(result + '\n')

In this script, we first open the file in write mode (‘w’) and write the test cases to it. We then open the file again in append mode (‘a’) and write the test results. The resulting file will look like this:

Brake System Test
Engine System Test
Transmission System Test
Brake System Test: Pass
Engine System Test: Fail
Transmission System Test: Pass

This example demonstrates the use of file modes and file objects in Python, and how they can be used effectively in an automotive software testing context.

Working with CSV and JSON files

In Python, working with structured data files like CSV and JSON is straightforward, thanks to the built-in csv and json modules.

Let’s examine these in the context of automotive software testing, where you might have test results that you want to export as a CSV or JSON file for further analysis.

Working with CSV Files

CSV (Comma Separated Values) files are widely used to store tabular data. In Python, the csv module provides functionality to both read from and write to CSV files.

Let’s say you have some test results stored in a list of dictionaries and you want to write them to a CSV file. Here is how you might do it:

import csv

# Test results as a list of dictionaries
test_results = [
    {"Test": "Brake System Test", "Result": "Pass"},
    {"Test": "Engine System Test", "Result": "Fail"},
    {"Test": "Transmission System Test", "Result": "Pass"},
]

# Open the CSV file in write mode
with open('test_results.csv', 'w', newline='') as file:
    # Create a CSV writer object
    writer = csv.DictWriter(file, fieldnames=["Test", "Result"])
    
    # Write the header
    writer.writeheader()
    
    # Write the data
    writer.writerows(test_results)

This script will create a CSV file test_results.csv with the following content:

Test,Result
Brake System Test,Pass
Engine System Test,Fail
Transmission System Test,Pass

Working with JSON Files

JSON (JavaScript Object Notation) is a lightweight data-interchange format that is easy for humans to read and write and easy for machines to parse and generate. In Python, the json module provides functionality to both read from and write to JSON files.

Continuing from the previous example, let’s say you want to write the test results to a JSON file instead of a CSV file. Here is how you might do it:

import json

# Test results as a list of dictionaries
test_results = [
    {"Test": "Brake System Test", "Result": "Pass"},
    {"Test": "Engine System Test", "Result": "Fail"},
    {"Test": "Transmission System Test", "Result": "Pass"},
]

# Open the JSON file in write mode
with open('test_results.json', 'w') as file:
    # Write the data to the JSON file
    json.dump(test_results, file, indent=4)

This script will create a JSON file test_results.json with the following content:

[
    {
        "Test": "Brake System Test",
        "Result": "Pass"
    },
    {
        "Test": "Engine System Test",
        "Result": "Fail"
    },
    {
        "Test": "Transmission System Test",
        "Result": "Pass"
    }
]

The indent parameter in json.dump is used to format the JSON data with indentation, making it easier to read.

This example demonstrates the use of CSV and JSON in Python, showing how simple it is to work with these data formats in the context of automotive software testing.

Chapter 5: File Handling In Python
Scroll to top
error: Content is protected !!