首页 > 解决方案 > 为什么不立即将函数写入文件?

问题描述

我想对于每次迭代,应该将内容写入文件名 1 和文件名 2。但是当程序仍在运行并且我正在检查这两个文件时,它们都是空的。但是,如果我只是通过取消注释“i>5”来执行前 5 次迭代,我可以看到程序立即完成并且文件按预期写入。

with open(filename1, 'w') as f1, open(filename2, 'w') as f2:
            for i, term in enumerate(self.term_list):
                # if i>5:
                #     break
                para = urllib.parse.quote(term)
                url = urllib.parse.urljoin(self.base_url, para)
                url = urllib.parse.urljoin(url, '?baike=' + self.source.name)
                try:
                    with urllib.request.urlopen(url) as response:
                        html = response.read()
                        html = html.decode('utf-8')
                        html_json = json.loads(html)

                        categories = self.get_category(html_json)
                        f1.write(term + '\t' + str(categories) + '\n')
                        self.term_categories[term] = categories
                        print(term, str(categories))
                except:
                    print("skip: ", term)
                    f2.write(term+ '\n')
                    self.skip_terms.append(term)
                    self.skip_count += 1

程序是否必须等待所有迭代完成,然后在最后将所有内容写入文件?这听起来不对

标签: python

解决方案


推荐阅读