Python实际上什么时候写入文件?

2024-09-29 00:14:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,它收集用户输入并将其写入文件。 基本结构是代码遍历图像列表,向用户显示每个图像,通过输入提示用户,并记录循环中每次迭代的用户输入。在循环中写入是很重要的,因为文件列表运行了数千个文件,我不想因为错误或电源故障或其他原因而重新启动

代码方面,相关部分为:

f=open(outfile,a,newline='')
for i in range(0,numFiles):
    folder = sheet.cell_value(i,22) #get image location from a spreadsheet
    Assess = sheet.cell_value(i,23) #get the current assessment from the spreadsheet
    if len(Assess)==0: #no existing assessment
       impath=os.path.join(folder,'image.png')
       <plt calls to show figure>
       while len(Assess)==0:
           Assess=input('Enter Assessment for row %d:' % i)
       <close figure>
    f.write('%s,'%s\n' % (folder, Assess.upper())) 
f.close()

电子表格已经有前70行的数据,所以我第一次得到输入查询是在I=71。我已经多次调用了input行,但是当我在记事本中打开文件时(代码仍在运行),我只看到71个值,它们是未输入if len(Assess)==0:后发生的写操作的结果。使手动输入在文件中可见的唯一方法是关闭文件

为什么文件写入处理Assess=input()写入与Assess=sheet.cell_value()写入不同

除了在for循环中打开和关闭文件之外,还有什么方法可以让它在每次迭代后写入


Tags: 文件代码用户图像image列表forinput
1条回答
网友
1楼 · 发布于 2024-09-29 00:14:20

这是由于没有发生冲洗。在需要时使用flush()进行写入。此外,with构造在处理文件时也可以帮助您:

   with open(..) as f:
       f.write...
   
   ... when you leave the with block your file is written and closed for you

相关问题 更多 >