Python writer.writerow(data) ValueError:关闭文件上的I/O操作



为什么我得到错误valueerror:I/O operation on closed file

import urllib2
import csv

from bs4 import BeautifulSoup
url = "http://www.tendersinfo.com/rss/index.php?sector_name=0202&notice_type=1,2,3,7,10,11,16,8"
with open('tender.csv', 'w') as csvfile:
    fieldnames = ['TITLE', 'LINK', 'DESCRIPTION']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer = csv.writer(csvfile, delimiter=',')
    resource = urllib2.urlopen(url)
    url = resource.read()
    soup = BeautifulSoup(url)
    soup.prettify()
    title = soup.find_all('title')
    link = soup.find_all('link')
    description = soup.find_all('description')
listIterator = []
listIterator[:] = range(2, 16)
for i in listIterator:
    data = [[title[i].get_text('')]]
    writer.writerow(data)

错误:

C: Python27 python.exe D:/PycharmProjects tenderinfo/tendorinfo.py回溯(最近一次调用):文件"D:/PycharmProjects/tenderinfo/tendorinfo.py",第32行write .writerow(data) ValueError:关闭文件的I/O操作

进程结束,退出代码1

我需要废弃该链接并将其放入CSV文件。

这是一个缩进问题。将最后一个块移动到with主体下:

with open('tender.csv', 'w') as csvfile:
    # ...
    # the following block should also be under "with" since it uses "writer"
    # which writes to csvfile that needs to be opened for writing at this moment
    listIterator = []
    listIterator[:] = range(2, 16)
    for i in listIterator:
        data = [[title[i].get_text('')]]
        writer.writerow(data)

最新更新