2015-09-01 3 views
0

Код царапанье индивидуальное событие с карты, но я получаю эту ошибку:: ValueErrorЗапись в файл CSV: операции ввода/вывода в закрытом файле

C:\Python27\python.exe C:/Users/James/PycharmProjects/scraperscrappy /scrapy.py Traceback (most recent call last): File "C:/Users/James/PycharmProjects/scraperscrappy/scrapy.py", line 31, in writer.writerow(c) ValueError: I/O operation on closed file

Я использую PyCharm.

Процесс завершен с кодом выхода 1 Python создает файл csv на лету, но я также попытался создать файл csv в проекте, но у меня все еще есть то же сообщение. Я думаю, проблема может заключаться в строках после zip в строке 31. Любая помощь оценивается.

import csv 
from urllib import urlopen 
from bs4 import BeautifulSoup 

html = urlopen("http://www.gbgb.org.uk/resultsRace.aspx?id=1793467") 
bsObj = BeautifulSoup(html) 

one = bsObj.findAll("li", {"class": "first essential fin"}) 
two = bsObj.findAll("li", {"class": "essential greyhound"}) 

three = bsObj.findAll("li", {"class": "timeDistance"}) 
four = bsObj.findAll("li", {"class": "trap"}) 
five = bsObj.findAll("li", {"class": "sp"}) 
six = bsObj.findAll("li", {"class": "timeSec"}) 
seven = bsObj.findAll("li", {"class": "essential trainer"}) 
eight = bsObj.findAll("li", {"class": "first essential comment"}) 

firstessentialfin = [a.getText().strip() for a in one] 
essentialgreyhound = [b.getText().strip() for b in two] 
timeDistance = [c.getText().strip() for c in three] 
trap = [d.getText().strip() for d in four] 
sp = [e.getText().strip() for e in five] 
timeSec = [f.getText().strip() for f in six] 
essentialtrainer = [g.getText().strip() for g in seven] 
firstessentialcomment = [h.getText().strip() for h in eight] 

with open('dogfile.csv', 'wb') as csvfile: 
    writer = csv.writer(csvfile, delimiter=",") 
for c in zip(firstessentialfin, essentialgreyhound, timeDistance, trap,sp, timeSec, essentialtrainer, 
     firstessentialcomment): 
    writer.writerow(c) 

ответ

1

Проблема в отступе. Переместить цикл для под менеджер тела with контекста:

with open('dogfile.csv', 'wb') as csvfile: 
    writer = csv.writer(csvfile, delimiter=",") 
    for c in zip(firstessentialfin, essentialgreyhound, timeDistance, trap,sp, timeSec, essentialtrainer, firstessentialcomment): 
     writer.writerow(c) 
+0

привет alecxe.Thaks для этого он работает perfect.I использовал Ctrl + Alt + L и для отступа, но это не всегда work.Many спасибо за это. – looknow

+1

@looknow хорошо, см. Http://stackoverflow.com/help/someone-answers. – alecxe

Смежные вопросы