import json
import logging
import os
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def sanitize_data(data, allowed_fields):
"""
Sanitizes user data by limiting output to allowed fields.
Handles potential errors gracefully.
"""
try:
sanitized_data = {}
for field in allowed_fields:
if field in data:
sanitized_data[field] = data[field]
return sanitized_data
except Exception as e:
logging.error(f"Error sanitizing data: {e}")
return {} # Return empty dict on error
def process_user_data(user_id):
"""
Processes user data, sanitizes it, and outputs it.
Handles file access errors.
"""
try:
# Simulate reading user data from a file (replace with actual data source)
filepath = f"user_data_{user_id}.json"
if not os.path.exists(filepath):
logging.warning(f"User data file not found: {filepath}")
return
with open(filepath, 'r') as f:
user_data = json.load(f)
# Define allowed fields
allowed_fields = ["user_id", "username", "email"]
sanitized_data = sanitize_data(user_data, allowed_fields)
# Output sanitized data (handle potential errors)
if sanitized_data:
print(json.dumps(sanitized_data)) # Output as JSON for consistency
else:
logging.warning(f"No valid data to output for user {user_id}")
except json.JSONDecodeError as e:
logging.error(f"Error decoding JSON from file {filepath}: {e}")
except FileNotFoundError as e:
logging.error(f"File not found: {e}")
except Exception as e:
logging.error(f"An unexpected error occurred: {e}")
if __name__ == "__main__":
# Example usage with different user IDs
process_user_data("123")
process_user_data("456")
process_user_data("789")
process_user_data("nonexistent") # Test missing file
Add your comment