Example output
Here's a Python code snippet that performs file I/O operations to read and write user data to a file in JSON format. The code includes error handling for cases such as file not found, read/write errors, and empty JSON objects.
```python
import json
import os
def write_user_data_to_file(file_path, user_data):
"""
Writes user data to a file in JSON format.
Args:
file_path (str): The path to the file where data will be written.
user_data (dict): The user data to be written to the file.
"""
try:
# Open the file in write mode and write the JSON data
with open(file_path, 'w') as file:
json.dump(user_data, file, indent=4)
print(f"Data successfully written to {file_path}")
except IOError as e:
print(f"Error writing to file {file_path}: {e}")
def read_user_data_from_file(file_path):
"""
Reads user data from a file in JSON format.
Args:
file_path (str): The path to the file to read data from.
Returns:
dict: The user data read from the file. Returns an empty dictionary if the file is empty or not found.
"""
if not os.path.exists(file_path):
print(f"File {file_path} not found.")
return {}
try:
# Open the file in read mode and load the JSON data
with open(file_path, 'r') as file:
data = json.load(file)
print(f"Data successfully read from {file_path}")
return data
except json.JSONDecodeError:
print(f"File {file_path} is empty or contains invalid JSON.")
return {}
except IOError as e:
print(f"Error reading file {file_path}: {e}")
return {}
# Example to test the code
if __name__ == "__main__":
# Define file path and user data
file_path = 'user_data.json'
user_data = {
"name": "John Doe",
"age": 30,
"email": "john.doe@example.com"
}
# Write user data to file
write_user_data_to_file(file_path, user_data)
# Read user data from file
data = read_user_data_from_file(file_path)
print("Read Data:", data)
```
### Explanation of the Code:
1. **write_user_data_to_file**:
- Opens the specified file in write mode (`'w'`).
- Uses `json.dump()` to write the `user_data` dictionary to the file in JSON format.
- Handles any `IOError` that might occur during the file operation, such as permission issues.
2. **read_user_data_from_file**:
- Checks if the file exists using `os.path.exists()`.
- Opens the specified file in read mode (`'r'`).
- Uses `json.load()` to read the JSON data from the file into a dictionary.
- Handles `json.JSONDecodeError` to catch cases where the file is empty or contains invalid JSON.
- Returns an empty dictionary if the file is not found or if there's an error during reading.
3. **Example to Test**:
- Writes a sample `user_data` dictionary to `user_data.json`.
- Reads the data back from the file and prints it.
### How to Run the Example:
1. Copy and paste the code into a Python script or Jupyter notebook.
2. Run the script. It will create a `user_data.json` file in the same directory, write user data to it, and then read the data back and print it.
This code ensures that if the file doesn't exist or contains invalid JSON, it handles the error gracefully and provides appropriate feedback.