Python“;打开(文件)为“f”;如果在循环中插入,则不保存内容

Python“;打开(文件)为“f”;如果在循环中插入,则不保存内容,python,python-2.7,python-3.x,with-statement,Python,Python 2.7,Python 3.x,With Statement,我主要使用带有open('file.txt',w')的作为f:进行写(读)。今天我注意到一些奇怪的事情 我在一个网站上爬行,有正常的分页 While True: # visit url, get/scrape data # save data in text file # find next link(pagination) # loop till next url is available. 为了先保存数据,我使用了和 with open('data.txt','w

我主要使用带有open('file.txt',w')的
作为f:
进行写(读)。今天我注意到一些奇怪的事情

我在一个网站上爬行,有正常的分页

While True:
   # visit url, get/scrape data
   # save data in text file
   # find next link(pagination) 
   # loop till next url is available.
为了先保存数据,我使用了

with open('data.txt','w') as f:
    While True:
       # visit url, get/scrape data
       f.write(some_scraped_data)
       # find next link(pagination)
       # loop till next url is available.
但当我运行这个脚本时,如果发生了一些异常,这个循环就会终止,并且没有数据保存在data.txt文件中

但是,当我执行
f=open('data.txt','w')
时,无论爬网的数据是什么,都会被保存(直到出现异常),即使我没有放置f.close()

我的问题是,我们如何用
实现同样的目标。我只是好奇,在哪里每个人都推荐使用
进行文件处理,而它不支持此功能

PS:我对python不是很有经验。因此,如果您觉得这个问题很愚蠢,我很抱歉,根据,如果发生异常,使用“with”将正确关闭文件,因此这是一种很好的方法

但是,您可以尝试
f.flush()
将缓冲区写入光盘。有关flush的更多信息,请点击此处:

f = open('data.txt','w')
While True:
    # visit url, get/scrape data
    f.write(some_scraped_data)
    # find next link(pagination) til next url is available.