Numpy.savetxt - 如何确保保存完成?
我想使用 numpy.savetxt
这个函数,但从文档上看,似乎没有办法返回一个标志,告诉我文件是否已经保存。
有没有其他方法可以确保文档在继续之前已经保存好了?
我的问题是,当我保存文档后,下一行代码又打开了这个文档,这样就出现了一些问题。我用一个循环多次打开这个文档,并比较结果。第一次打开的时候没问题,但之后的值都是错误的,而且都是一样的。
在一个循环里
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")
2 个回答
1
根据源代码,在出现错误时,它可能会抛出一个值错误(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
希望这对你有帮助...
2
你可以用一些来自 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!