2012-06-12 4 views
1

계산을 실행할 때 여러 가지 정보를 제공 할 때까지 지금까지 숫자 코드 print을 가지고있는 숫자 코드가 있습니다.Easy YAML in Python

나는 정보를 더 쉽게 처리 할 수 ​​있도록 YAML을 사용하고 있습니다. C++의 경우 다음 문법이 있습니다.

YAML::Emitter out; 
out << YAML::BeginSeq; 
out << "eggs"; 
out << "bread"; 
out << "milk"; 
out << YAML::EndSeq; 

사용하기에 충분합니다. 파이썬에 비슷한 것이 있다면 지금 궁금합니다. 지금 막 건너 한 거친 상당 PyYAML이며, 위의 것에 해당 - 내가 잘못 아니에요 경우 -

print yaml.emit([yaml.StreamStartEvent(), 
       yaml.DocumentStartEvent(), 
       yaml.SequenceStartEvent(anchor=None, tag=None, implicit=True), 
       yaml.ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'eggs'), 
       yaml.ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'bread'), 
       yaml.ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'milk'), 
       yaml.SequenceEndEvent() 
       ]) 

처럼 보이는 뭔가 와우, 자세한입니다. 좀 더 자세한 구문/Python YAML 패키지에 대해 알고 있습니까? 물론 항상 yaml.dump()이 있지만 데이터를 즉시 작성하는 것이 중요합니다.

+2

이것은 위험 할 정도로 '나를 추천하는 X'질문에 가깝습니다. SO는 해당 장소가 아닙니다. 덜 구체적인 Python YAML 라이브러리 (또는 PyYAML을 간략하게 작성하는 방법)를 구체적으로 묻는 것이 좋습니다. –

+0

그래, 그거 좋은 암시 야. 재 형성. –

답변

1

PyYAML은 출력이 항상 올바른 형식인지 확인하여 부분 문서를 내보낼 수 없습니다.

해결책은 항상 완전한 문서를 방출하는 것입니다!

import yaml 
print yaml.dump(["eggs", "bread", "milk", "squick"], explicit_start=True) 
print yaml.dump(dict(a=1, b=2, c=3), explicit_start=True) 

yaml.load_all으로로드 할 수있는 2 개의 문서가 포함 된 스트림을 출력합니다.

+0

"부분 문서"란 무엇입니까? YAML은 내가 말할 수있는 한 닫기 태그를 가지고 있지 않다. (명시 적리스트와 dicts에 대해서는 "[]"과 "}"를 제외하고), 어쨌든 위의 긴 yaml.emit 코드는 의미있는 것을 만들어 낸다. 음, 완전한 딕테이션과 목록을 덤핑하는 것은 옵션이 될 수 있지만 중첩 작업은 여기에서 가능하지 않습니다. –