में कनवर्ट करना मुझे YAML फ़ाइल में dict
पर दस्तावेज़ों को मैप करने की निम्न समस्या है और उन्हें ठीक से मानचित्रण करना है।YAML फ़ाइल को पायथन dict
मैं निम्नलिखित YAML फ़ाइल है, जो एक सर्वर (db.yml
) का प्रतिनिधित्व करता है:
instanceId: i-aaaaaaaa
environment:us-east
serverId:someServer
awsHostname:ip-someip
serverName:somewebsite.com
ipAddr:192.168.0.1
roles:[webserver,php]
मैं इस YAML फ़ाइल, जो मैं बिना किसी समस्या के लिए कर सकते हैं लोड करते हैं, मुझे लगता है कि मुझे लगता है कि समझते हैं।
instanceId = getInstanceId()
stream = file('db.yml', 'r')
dict = yaml.load_all(stream)
for key in dict:
if key in dict == "instanceId":
print key, dict[key]
मैं निम्नलिखित की तरह काम करने के लिए तर्क करना चाहते हैं:
- लोड YAML, नक्शे दस्तावेज़ में हर dict में
- नज़र dict के लिए, अगर
instanceId
मैचों कि जो स्थापित किया गया थाgetInstanceId()
द्वारा, फिर उस दस्तावेज़ के लिए सभी कुंजी और मान मुद्रित करें।
अगर मैं कमांड लाइन से नक्शा डेटा संरचना को देखो, मैं:
{'instanceId': 'i-aaaaaaaa environment:us-east serverId:someServer awsHostname:ip-someip serverName:someserver ipAddr:192.168.0.1 roles:[webserver,php]'}
मुझे लगता है मैं अनुचित तरीके से YAML फ़ाइल के लिए डेटा संरचना बनाने जा सकता है, और पर सामग्री से मेल खाते पर dict
, मैं थोड़ा खो गया हूँ।
साइड नोट: मैं yaml.load()
का उपयोग करके इस फ़ाइल में सभी दस्तावेज़ों को लोड नहीं कर सकता, मैंने yaml.load_all()
का प्रयास किया, जो काम करने लगता है लेकिन मेरा मुख्य मुद्दा अभी भी मौजूद है।
कृपया किसी और चीज़ के लिए 'dict' का नाम बदलें। यह बुरा बुरा है।साथ ही, क्या आप 'yaml.load_all (स्ट्रीम) 'के मान को प्रिंट कर सकते हैं ताकि हम देख सकें कि आपके पास वास्तव में क्या है? अंत में, ऐसा प्रतीत नहीं होता है कि आपने एक अच्छा YAML नमूना शामिल किया है - जहां एकाधिक सर्वर परिभाषित किए गए हैं? – gahooa
मैं इसका नाम बदलूंगा, सर्वोत्तम अभ्यास के लिए धन्यवाद। yaml_load_all (स्ट्रीम) दिखाता है: <जनरेटर ऑब्जेक्ट load_all 0x10b2648c0> पर। मैंने समस्या निवारण के लिए दूसरा दस्तावेज़ हटा दिया। –
कोड में कौन सी लाइब्रेरी/मॉड्यूल का उपयोग किया जाता है? मुझे लगता है कि यह आयात कथन जोड़ने के लिए इस प्रश्न को बेहतर करेगा, ताकि जो लोग इस प्रश्न को ढूंढ सकें उन्हें इसके लिए खोज नहीं करना पड़ेगा और संभावित रूप से कई संभावित खोज पाएंगे। – Zelphir