2014-06-09 58 views
0

我想使用numpy.savetxt函数,但是从文档看来,似乎没有一个标记指示文件是否已保存的方式。Numpy.savetxt - 我如何确保保存完成?

有没有其他方法可以确保文档在继续之前保存?

我的问题是,当我保存我的文档时,下一行打开该文档,我得到一些问题。我使用for循环多次打开文档并比较结果。第一次打开它是可以的。之后,这些值是不正确的和相同的。

里面一个for循环

savetxt('forest_submitfile.csv', end_matrix , delimiter=',', fmt='%s,%s,%s', 
       header='EventId,RankOrder,Class', comments = '') 
     print('Saving for Submit in CSV SUCCESS') 
     is_file_ok = False 
     while not is_file_ok: 
      if os.path.isfile("forest_submitfile.csv") and os.access("forest_submitfile.csv", os.R_OK): 
       break 
     print('Calculate AMS Metric Score') 
     AMS_metric("solutionFile.csv", "forest_submitfile.csv") 
+0

你可以发布一个小程序,出现此问题? – U2EF1

+0

我已经发布了代码。我的问题是,AMS公制函数将为我的第一次运行提供很好的价值。但是对于2nd和n-loop无用的值。 – zer02

+0

生成的forest_submitfile.csv是一个大型的350-550k行文件。 – zer02

回答

1

您还可以使用两个功能从os检查你。
isfile检查是否存在文件。
R_OK检查它是否处于可读状态,这意味着numpy已完成写入。

yourFile = "C:\folder\folder\file.txt" 

import os 
if os.path.isfile(yourFile) and os.access(yourFile, os.R_OK): 
    # if you got into this check, your file is good to go! 
1

按照source,它可以引发ValueError或者失败一个AttributeError。所以,也许赶上那些:

try: 
    np.savetxt('file', dataStructure) 
except ValueError, e: 
    print('Save failed! {}'.format(str(e)) 
    raise SystemError 
except AttributeError, e: 
    print('Save failed! {}'.format(str(e)) 
    raise SystemError 

希望这有助于...

+0

虽然这个问题有点不清楚,但似乎并没有表明存在任何异常 - 只是保存的文件中的数据不正确/中断 – Dannnno

+0

我将其解释为说OP要检查numpy是否写入了文件正确。所以我指出他们的职能来源,并说明有两个例外可以提出。 – hd1