我编写了一个用于测试程序的模块,它将测试数据写入文本文件。我的问题是文件不是我的系统RAM的大小,但总是在写入所有数据之前切断。到底是怎么回事?
代码段:
def test_del(tree, over=True):
if over:
log = open("testlog.txt", 'w+')
log.truncate()
else:
try:
log = open("testlog.txt", 'r+')
except:
log = open("testlog.txt", 'w+')
lis = treeToList(tree)
shuffle(lis)
while lis:
tree = delete(tree, lis.pop(0))
log.write(str(write_tree(tree)))
if tree:
log.write("\n")
for e in treeToList(tree):
log.write(str((e, search(tree, e)))+"\n")
log.write("-" * 80 + "\n")
if "False" in log.read():
print "There is an error in the test case. Refer to testlog.txt."
else:
print "No error in test case. Results stored in testlog.txt."
函数treeToList()
将2-3树转换为列表,write_list()
返回树的字符串表示,shuffle()
为random.shuffle()
,delete()
从树中删除给定的元素。所有这些功能都正常运行。
答案 0 :(得分:2)
我在任何地方都看不到log.close()
。如果没有它,您不能保证日志实际上已正确刷新到磁盘。
尝试在每个写行后添加log.flush()
。它会降低你的代码速度,但它应该给出正确的输出。您可能还希望在log.seek(0)
之前log.read()
。{/ p>