2017-03-21 1 views
2

파일로 생성 된 목록을 저장하려고하는데 목록의 인쇄가 잘 보이지만 compoundlist.csv 파일에 쓰지 않습니다. 나는 내가 뭘 잘못하고 있는지 모르겠다. 나는리스트가 생성 된 후에 그리고 루프 중에 쓰려고 노력했다. 나는 같은 결과를 얻었다.파일에 저장

import urllib 
import urllib.request 
from bs4 import BeautifulSoup 
import os 
import csv 


def make_soup(url): 
    thepage = urllib.request.urlopen(url) 
    soupdata = BeautifulSoup(thepage, "html.parser") 
    return soupdata 


compoundlist = [] 
soup = make_soup("http://www.genome.jp/dbget-bin/www_bget?ko00020") 
i = 1 
file = open("Compoundlist.csv", "wb") 
for record in soup.findAll("nobr"): 
    compound = '' 
    if (record.text[0] == "C" and record.text[1] == '0') or (record.text[0] == "C" and record.text[1] == '1'): 
     compoundlist = "http://www.genome.jp/dbget-bin/www_bget?cpd:" + record.text 
     file.write(compoundlist) 
     print(compoundlist) 
+0

시도 파일에 열린 파일 버퍼를 플러시하기 위해 코드의 끝에 다음 ("UTF- 8) "file : write (compoundlist.encode ("utf-8 ")) – abhinav

+0

'TypeError : 'str'은 버퍼 인터페이스를 지원하지 않습니다.'하지만" w "작동합니다. 개행 문자를 모두 추가하지 않으므로 모두 긴 문자열입니다. 파일을 닫지 않아 시스템에서 파기 될 가능성이 있습니다. 그러나 나는 당신이하는 것과 똑같은 실수를하지는 않을 것입니다. – tdelaney

답변

0

시도가 부가

file.close() 

이 compoundlist.encode를 사용하여 결과를 인코딩하는

+0

고마워요! 문제를 해결 한 파일을 닫아서 쓰기 만하면됩니까? – nsitapara

+0

@visionarylearner를 사용하여 파일을 닫는 것이 좋습니다. 또는'file.flush()'를 사용하여 버퍼를 플러시 할 수 있습니다. 실제로는 같은 일을하지만 나중에 파일에 쓸 수있게되며 대용량의 데이터를 쓸 때 일반적으로 사용됩니다 –