2014-09-25 3 views
0

나는 값의지도를 가지고 있으며, 키는 파일 이름이고 값은 배열 문자열입니다. 나는 해당 파일yaml 파일을 조작하고 다시 쓸 수 있습니까?

어떻게 파일을로드하고 값이 이미

예를 들어, 존재 여부를 배열의 값을 포함하는 고정 YAML의 가치를 창출하는 것이

YAML (file.yaml)

trg::azimuth: 
-extra 
-intra 
-lateral 

또는

에서

trg::azimuth: 
    [extra,intra,lateral] 

RUBY

{"file.yaml" => ["extra","intra","lateral"]} 
+0

당신이하려는 일은 분명하지 않습니다. 'trg :: azimuth :'는 어디에서 왔습니까? 샘플 해시가 아니며 어디서나 설명되지 않습니다. –

+0

trg :: azimuth : yaml에서 변경하지 않을 것으로 예상되는 정적 값입니다. –

답변

1

YAML documentation, 잘 그 방법을 포함하지는 않지만 ~이야. ay

기본 구현은 libyaml 래퍼 Psych입니다.

YAML의 기초가되는 Psych documentation은 읽기, 구문 분석 및 YAML을 처리합니다.

require 'yaml' 

foo = {"file.yaml" => ["extra","intra","lateral"]} 
bar = foo.to_yaml 
# => "---\nfile.yaml:\n- extra\n- intra\n- lateral\n" 

그리고 여기에 생성 된 직렬화 bar 변수가 작성된 경우처럼 보이는 내용은 다음과 같습니다 :

baz = YAML.load(bar) 
baz 
# => {"file.yaml"=>["extra", "intra", "lateral"]} 
하십시오 YAML 파서가 필요로하는 형식의

puts bar 
# >> --- 
# >> file.yaml: 
# >> - extra 
# >> - intra 
# >> - lateral 

다음은 기본 과정이다

이 시점에서 해시는 루비 해시에서 왕복 이동했으며, YAML 직렬화 문자열로, 다시 Ruby 해시로. 파일에

쓰기 YAML은 루비의 File.write 방법을 사용하여 쉽게 :

File.write(foo.keys.first, foo.values.first.to_yaml) 

또는

포함 "file.yaml"라는 이름의 파일에 결과
foo.each do |k, v| 
    File.write(k, v.to_yaml) 
end 

:

--- 
- extra 
- intra 
- lateral 

파일을 읽고 구문 분석하려면 YAML의 load_file 메서드를 사용하십시오.

foo = YAML.load_file('file.yaml') 
# => ["extra", "intra", "lateral"] 

"How do I parse a YAML file?는"유용 할 수 있습니다뿐만 아니라,이 페이지의 오른쪽에있는 다른 "관련"링크.

관련 문제