【问题标题】:Writing to a CSV file: ValueError: I/O operation on closed file写入 CSV 文件:ValueError: I/O operation on closed file
【发布时间】:2015-11-27 01:19:27
【问题描述】:

代码从卡片中抓取了一个单独的事件,但我不断收到此错误:

C:\Python27\python.exe C:/Users/James/PycharmProjects/scraperscrapy /scrapy.py Traceback(最近一次调用最后): 文件“C:/Users/James/PycharmProjects/scraperscrapy/scrapy.py”,第 31 行,在 writer.writerow(c) ValueError: I/O operation on closed file

我正在使用 pyCharm。

进程以退出代码 1 结束 Python 即时创建 csv 文件,但我也尝试在项目中创建一个 csv 文件,但我仍然收到相同的消息。我认为问题可能出在第 31 行 zip 之后的字符串中。感谢任何帮助。

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)

【问题讨论】:

    标签: python file csv beautifulsoup bs4


    【解决方案1】:

    问题在于缩进。将 for 循环移动到 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)
    

    【讨论】:

    • 嗨 alecxe.Thaks 因为它完美运行。我使用 ctrl alt 和 L 来缩进,但这并不总是有效。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多