data_handler.py
· 802 B · Python
Raw
import yaml
import json
from abc import ABC, abstractmethod
# 策略介面
class DataHandlerStrategy(ABC):
@abstractmethod
def read_data(self, path):
pass
@abstractmethod
def write_data(self, path, data):
pass
# YAML 策略
class YamlHandler(DataHandlerStrategy):
def read_data(self, path):
with open(path, "r") as f:
return yaml.safe_load(f)
def write_data(self, path, data):
with open(path, "w") as f:
yaml.safe_dump(data, f)
# JSON 策略
class JsonHandler(DataHandlerStrategy):
def read_data(self, path):
with open(path, "r") as f:
return json.load(f)
def write_data(self, path, data):
with open(path, "w") as f:
json.dump(data, f, ensure_ascii=False, indent=4)
| 1 | import yaml |
| 2 | import json |
| 3 | from abc import ABC, abstractmethod |
| 4 | |
| 5 | # 策略介面 |
| 6 | class DataHandlerStrategy(ABC): |
| 7 | @abstractmethod |
| 8 | def read_data(self, path): |
| 9 | pass |
| 10 | |
| 11 | @abstractmethod |
| 12 | def write_data(self, path, data): |
| 13 | pass |
| 14 | |
| 15 | |
| 16 | # YAML 策略 |
| 17 | class YamlHandler(DataHandlerStrategy): |
| 18 | def read_data(self, path): |
| 19 | with open(path, "r") as f: |
| 20 | return yaml.safe_load(f) |
| 21 | |
| 22 | def write_data(self, path, data): |
| 23 | with open(path, "w") as f: |
| 24 | yaml.safe_dump(data, f) |
| 25 | |
| 26 | |
| 27 | # JSON 策略 |
| 28 | class JsonHandler(DataHandlerStrategy): |
| 29 | def read_data(self, path): |
| 30 | with open(path, "r") as f: |
| 31 | return json.load(f) |
| 32 | |
| 33 | def write_data(self, path, data): |
| 34 | with open(path, "w") as f: |
| 35 | json.dump(data, f, ensure_ascii=False, indent=4) |
| 36 |