Numpy.savetxt - 如何确保保存完成?

0 投票
2 回答
886 浏览
提问于 2025-04-18 09:13

我想使用 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!

撰写回答