2015-01-27 2 views
0

청크를 읽고 모든 반복 후에 다음을 반환하는 파일을 읽는 함수가 있습니다.yield를 사용하여 JSON 파일로 스트림

def foo_now(): 
    for file in all_files: 
     key_id, final_text = readChunk(file) 
     yield { 
      key_id : { 
       'desc': final_text 
      } 
     } 

그 이전 내가 하나 사전에 모든 반환 사전을 저장하고 그들을 사용하여 JSON 파일로 전체 사전을 덤프 :

def foo_earlier(): 
    temp_dict = dict() 
    for file in all_files: 
     key_id, final_text = readChunk(file) 
     temp_dict.update({key_id : {'desc': final_text}}) 
    return temp_dict 

def saveJSON(filename, data): 
    with open(filename, 'wb') as outfile: 
     json.dump(data, outfile) 
    print "Data saved in " + filename 

saveJSON("file.json", foo_earlier()) 

을하지만 지금은 하나 각 사전 하나를 덤프하려면 foo_now()을 사용하여 파일에서 읽습니다. 어떻게해야합니까?

답변

1
for item in foo_now(): 
    with open("my_out.json","ab") as f: 
     json.dump(item,f) 

또는

with open("my_out.json","ab") as f: 
    for item in foo_now(): 
     json.dump(item,f) 
+0

답장을 보내 주셔서 감사하지만 해당 스크립트'형식 오류 실행할 때이 오류가 점점 오전 : <열린 파일 'my_out.json을'모드 0x0000000002B3FB70에서 'AB'는> 아니다 JSON 직렬화 가능''print item'은 사전을 올바르게 출력합니다! –

+1

whoops 인수가 거꾸로 ... 고정되었습니다. –

관련 문제