目次  
1. YAML के हो?
YAML को परिचय
YAML (YAML Ain’t Markup Language) डेटा सिरियलाइजेसनको एक स्वरूप हो, जसलाई संरचित डेटा अभिव्यक्त गर्न व्यापक रूपमा प्रयोग गरिन्छ। यो JSON र XML जस्तै देखिन्छ, तर YAML को विशेषता यसको सरलता र पढ्न सजिलो हुनु हो। विशेष गरी, इन्डेन्टेशनले स्तरबद्ध संरचना देखाउन सक्ने कारणले, यो मानवले सजिलै पढ्न सक्ने स्वरूप हो, जुन ठूलो फाइदा हो।JSON र XML सँगको भिन्नता
JSON र XML पनि डेटा वर्णन गर्ने स्वरूपहरू हुन्, तर YAML ले यीसँग तुलना गर्दा अनावश्यक चिन्हहरू कम प्रयोग गर्छ, जसले यसलाई सरल र बुझ्न सजिलो बनाउँछ। उदाहरणका लागि, JSON ले कर्ली ब्रेसेस{} र कमा , धेरै प्रयोग गर्छ, जसले विशेष गरी ठूलो डेटा ह्यान्डल गर्दा दृश्यता घट्न सक्छ। अर्कोतर्फ, YAML ले इन्डेन्टेशनद्वारा संरचना देखाउँछ, जसले दृश्यात्मक रूपमा डेटा को स्तरबद्धता सजिलै बुझ्न मद्दत गर्छ।Python सँगको अनुकूलता
Python को सिन्ट्याक्स इन्डेन्टेशनद्वारा ब्लक देखाउने संरचना भएकोले, यो YAML को फर्म्याटसँग राम्रोसँग मेल खान्छ। साथै, Python मा YAML ह्यान्डल गर्नको लागि लाइब्रेरी “PyYAML” प्रयोग गरेर, YAML फाइलहरू सजिलै पढ्न‑लेख्न सकिन्छ, र यसलाई कन्फिगरेसन फाइलको रूपमा प्रयोग गर्ने केसहरू धेरै छन्।2. Python मा YAML फाइल पढ्ने र लेख्ने तरिका
YAML फाइलको पढाइ
YAML फाइललाई Python मा पढ्नको लागि, पहिले “PyYAML” लाइब्रेरी इन्स्टल गर्नुपर्छ, रyaml.safe_load() फङ्क्शन प्रयोग गर्नुहोस्। यो फङ्क्शन सुरक्षित तरिकाले YAML डेटा Python को शब्दकोश वा सूचीमा रूपान्तरण गर्छ। तल आधारभूत पढाइको उदाहरण छ।import yaml
# YAML फाइल खोलेर सामग्री पढ्ने
with open('config.yaml', 'r') as file:
    data = yaml.safe_load(file)
print(data)database:
  host: localhost
  port: 3306{'database': {'host': 'localhost', 'port': 3306}}YAML फाइलको लेखन
Python को डेटा YAML ढाँचामा लेख्नको लागि,yaml.dump() फङ्क्शन प्रयोग गर्नुहोस्। तलको उदाहरणमा, को शब्दकोशलाई YAML फाइलमा लेख्दैछ।import yaml
data = {
    'name': 'John Doe',
    'age': 30,
    'city': 'New York'
}
with open('output.yaml', 'w') as file:
    yaml.dump(data, file)data लाई output.yaml नामको फाइलमा बचत गर्छ। परिणामस्वरूप तलको जस्तो YAML ढाँचाको डेटा उत्पादन हुन्छ।age: 30
city: New York
name: John Doeजापानी भाषाको ह्यान्डलिंग
YAML मा जापानी भाषा प्रयोग गर्दा, विशेष गरी अक्षर बिग्रन नदिनallow_unicode=True विकल्प निर्दिष्ट गर्नु महत्त्वपूर्ण छ। यसले YAML फाइलभित्र जापानीको सही प्रदर्शन सुनिश्चित गर्छ।yaml.dump(data, file, allow_unicode=True)
3. उन्नत YAML अपरेसन
कस्टम ट्यागको सिर्जना
YAML केवल मूलभूत डेटा प्रकारहरू(सूची、शब्दकोश आदि)मात्र होइन, Python वस्तुहरूलाई सिरियलाइज・डिसिरियलाइज गर्न पनि सम्भव छ। यस अवस्थामा, कस्टम ट्याग प्रयोग गरिन्छ। तल Python को क्लासलाई YAML स्वरूपमा बचत गर्ने उदाहरण छ।import yaml
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
def person_representer(dumper, data):
    return dumper.represent_mapping('!Person', {'name': data.name, 'age': data.age})
def person_constructor(loader, node):
    values = loader.construct_mapping(node)
    return Person(values['name'], values['age'])
yaml.add_representer(Person, person_representer)
yaml.add_constructor('!Person', person_constructor)
# वस्तुलाई YAML मा रूपान्तरण गरी बचत गर्नुहोस्
person = Person('Alice', 25)
with open('person.yaml', 'w') as file:
    yaml.dump(person, file)
# YAML फाइलबाट वस्तु पुनर्निर्माण गर्नुहोस्
with open('person.yaml', 'r') as file:
    loaded_person = yaml.load(file, Loader=yaml.FullLoader)क्रमको संरक्षण
PyYAML मा डिफल्ट रूपमा शब्दकोशको क्रम कायम रहँदैन, त्यसैले क्रम महत्त्वपूर्ण हुने अवस्थामाruamel.yaml प्रयोग गर्न सिफारिस गरिन्छ।ruamel.yaml मा शब्दकोशको कुञ्जीहरूको क्रम कायम रहँदा, क्रम महत्त्वपूर्ण सेटिङ फाइलहरूलाई ह्यान्डल गर्दा उपयोगी हुन्छ।
4. YAML को प्रयोग उदाहरण: सेटिङ फाइल व्यवस्थापन
सेटिङ फाइलको रूपमा YAML को सुविधा
YAML सेटिङ फाइलको रूपमा व्यापक रूपमा प्रयोग गरिन्छ। विशेष गरी Python अनुप्रयोगहरूमा, सेटिङ डेटा व्यवस्थापनको लागि उत्तम स्वरूपको रूपमा प्रयोग हुन्छ। यसको कारण YAML मानवले पनि पढ्न सजिलो र स्तरबद्ध संरचनालाई दृश्यात्मक रूपमा बुझ्न सहज हुन्छ। उदाहरणका लागि, डेटाबेसको जडान जानकारी वा अनुप्रयोगको लग सेटिङ जस्ता जटिल सेटिङहरूलाई एकै साथ व्यवस्थापन गर्न उपयुक्त छ।database:
  host: localhost
  port: 3306
  username: user
  password: pass
logging:
  level: DEBUG
  file: /var/log/app.logवास्तविक परियोजनामा YAML को प्रयोग उदाहरण
YAML Python फ्रेमवर्कहरू जस्तै Django वा Flask, CI उपकरण CircleCI, तथा कन्टेनर अर्डरन्टेसन उपकरण Kubernetes जस्ता विभिन्न परियोजनाहरूमा प्रयोग गरिन्छ। यी परियोजनाहरूमा मुख्यतया कन्फिगरेसन व्यवस्थापन र वातावरणीय चलहरू (environment variables) को परिभाषामा प्रयोग हुन्छ। Django मा YAML को प्रयोग उदाहरण: Django परियोजनामा, YAML प्रयोग गरेर बाह्य सेटिङ फाइलहरू पढ्न सकिन्छ, जसले डिप्लोइ र वातावरण निर्माणलाई सरल बनाउँछ। सेटिङ फाइलको रूपमा YAML प्रयोग गर्दा, विकास वातावरण वा उत्पादन वातावरण अनुसार विभिन्न सेटिङहरूलाई लचिलो रूपमा व्यवस्थापन गर्न सकिन्छ।import yaml
with open('config.yaml', 'r') as file:
    config = yaml.safe_load(file)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': config['database']['name'],
        'USER': config['database']['username'],
        'PASSWORD': config['database']['password'],
        'HOST': config['database']['host'],
        'PORT': config['database']['port'],
    }
}JSON र XML सँगको तुलना
YAML सेटिङ फाइलको रूपमा प्रयोग गर्न सजिलो हुनुमा JSON वा XML भन्दा स्पष्ट रूपमा उत्कृष्ट छ। JSON कर्ली ब्रेस र कमासँग विभाजित हुन्छ, जसले लामो फाइलहरूलाई हेर्न कठिन बनाउँछ। XML लाई सुरु ट्याग र अन्त्य ट्याग आवश्यक पर्छ, जसले अक्सर बडो बडो बनाउँछ। अर्कोतर्फ, YAML इन्डेन्टेशनद्वारा स्तरबद्ध संरचना दर्शाउँछ, जसले सेटिङ फाइलको सामग्रीलाई सहज रूपमा बुझ्न मद्दत गर्छ। JSON र YAML को तुलना:{
  "database": {
    "host": "localhost",
    "port": 3306,
    "username": "user",
    "password": "pass"
  },
  "logging": {
    "level": "DEBUG",
    "file": "/var/log/app.log"
  }
}database:
  host: localhost
  port: 3306
  username: user
  password: pass
logging:
  level: DEBUG
  file: /var/log/app.log
5. समस्या समाधान र त्रुटि ह्यान्डलिंग
सामान्य त्रुटिहरू र तिनीहरूको समाधान
YAML फाइलहरूलाई ह्यान्डल गर्दा उत्पन्न हुने सामान्य त्रुटिहरू मध्ये एक हो “फाइल अवस्थित छैन” वा “फाइल सही ढाँचामा छैन” जस्ता समस्याहरू। यी त्रुटिहरूलाई उचित त्रुटि ह्यान्डलिंग लागू गरेर रोक्न सकिन्छ। उदाहरणका लागि, यदि YAML फाइलको पार्स त्रुटि उत्पन्न हुन्छ भने,yaml.YAMLError द्वारा अपवादलाई क्याच गर्न सकिन्छ। साथै, फाइल अवस्थित नभएको अवस्थामा, FileNotFoundError लाई ह्यान्डल गरेर प्रयोगकर्तालाई उपयुक्त सन्देश देखाउन सम्भव हुन्छ।import yaml
def load_yaml(file_path):
    try:
        with open(file_path, 'r') as file:
            data = yaml.safe_load(file)
    except FileNotFoundError:
        print(f"Error: The file {file_path} does not exist.")
        return None
    except yaml.YAMLError as e:
        print(f"Error: Failed to parse YAML file. {e}")
        return None
    return data
config = load_yaml('config.yaml')
if config:
    print(config)त्रुटि ह्यान्डलिंगको सर्वोत्तम अभ्यास
- फाइल अस्तित्व जाँच: फाइल अस्तित्वमा छ कि छैन जाँच गर्नुहोस्, र यदि छैन भने त्रुटि सन्देश देखाउनुहोस्।
- पार्स त्रुटिको ह्यान्डलिंग: यदि YAML को सिन्ट्याक्स सही छैन भने, त्रुटि क्याच गरेर विस्तृत सन्देश प्रदान गर्नुहोस्।
- लग आउटपुट: समस्या उत्पन्न हुँदा, त्रुटि सन्देशलाई लग फाइलमा रेकर्ड गर्नुहोस्, र पछि समस्या समाधान गर्न सकियोस्।

 
 


