import json
import logging
# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def load_user_data(filepath="user_data.json"):
"""Loads user data from a JSON file. Falls back to an empty dictionary if the file doesn't exist or is invalid."""
try:
with open(filepath, 'r') as f:
user_data = json.load(f)
logging.info(f"Loaded user data from {filepath}")
return user_data
except FileNotFoundError:
logging.warning(f"User data file not found: {filepath}. Using empty data.")
return {}
except json.JSONDecodeError:
logging.error(f"Error decoding JSON from {filepath}. Using empty data.")
return {}
except Exception as e:
logging.exception(f"An unexpected error occurred while loading user data: {e}. Using empty data.")
return {}
def save_user_data(data, filepath="user_data.json"):
"""Saves user data to a JSON file."""
try:
with open(filepath, 'w') as f:
json.dump(data, f, indent=4) # Use indent for readability
logging.info(f"Saved user data to {filepath}")
except Exception as e:
logging.error(f"Error saving user data to {filepath}: {e}")
def get_user(user_id, user_data):
"""Retrieves user data by ID. Returns None if not found."""
if user_id in user_data:
return user_data[user_id]
else:
logging.warning(f"User with ID {user_id} not found.")
return None
def set_user(user_id, user_data):
"""Sets user data for a given ID."""
user_data[user_id] = user_data
return user_data
if __name__ == '__main__':
# Example Usage
user_data = load_user_data() # Load data from file
if user_data:
user_data = set_user("user123", {"name": "Alice", "email": "alice@example.com"})
print(f"User data for user123: {user_data}")
retrieved_user = get_user("user123", user_data)
print(f"Retrieved user: {retrieved_user}")
save_user_data(user_data) # Save updated data
else:
print("No user data available.")
Add your comment