python - 为什么不立即将函数写入文件?
问题描述
我想对于每次迭代,应该将内容写入文件名 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
程序是否必须等待所有迭代完成,然后在最后将所有内容写入文件?这听起来不对
解决方案
推荐阅读
- r - 在 R 中合并两个形状文件(空间多边形和空间点)时出错
- python - 如何处理订单迁移文件?
- java - 如果优先级队列是最小堆的实现,那么优先级队列如何始终产生相同的结果
- android - 如何将资产文件夹中的 docx 文件存储到 android 设备上的设备公共目录,例如“下载”
- javascript - 在第二个选择框中禁用第一个选择框的选定选项
- nginx - nginx websocket握手错误400使用AWS ELB
- javascript - 基于旧版本代码开发npm包
- spring-boot - 停止使用 Stream 侦听器的消息
- web-scraping - BeautifulSoup 在使用 .find 方法时找不到所有标签?
- javascript - AJAX 表单提交不重新加载内容