找不到关闭 csv 文件的方法

Can't find any way to close a csv file

我在 python scrapy 中编写了一个脚本,以从网页中获取不同的 ids 及其对应的 names。当我执行我的脚本时,我可以看到结果正确地通过了,并且我得到了一个填充在 csv 文件中的数据。我使用的是 python 3.6,所以当我使用 scrapy 的内置命令(意味着将数据写入 csv 文件)时,我总是得到一个 csv 文件,每个交替行都有空行。但是,我尝试了以下方法来达到目的并且它完成了它的工作。现在,它生成一个 csv 文件来修复空行问题。

我的问题:作业完成后如何关闭 csv 文件?

这是我目前的尝试:

import scrapy, csv

class SuborgSpider(scrapy.Spider):
    name = "suborg"

    start_urls = ['https://www.un.org/sc/suborg/en/sanctions/1267/aq_sanctions_list/summaries?type=All&page={}'.format(page) for page in range(0,7)]

    def __init__(self):
        self.file = open("output.csv", "w", newline="")

    def parse(self, response):
        for item in response.xpath('//*[contains(@class,"views-table")]//tbody//tr'):
            idnum = item.xpath('.//*[contains(@class,"views-field-field-reference-number")]/text()').extract()[-1].strip()
            name = item.xpath('.//*[contains(@class,"views-field-title")]//span[@dir="ltr"]/text()').extract()[-1].strip()
            yield{'ID':idnum,'Name':name}
            writer = csv.writer(self.file)
            writer.writerow([idnum,name])

您可以改为关闭实际文件:

你可以在closed()方法中调用,蜘蛛关闭时自动调用

def closed(self, reason):
    self.file.close()