我编写了一个测试程序的模块,它将测试数据写入文本文件。我的问题是,这个文件并不像我的系统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() is random.shuffle(),delete()从树中删除给定的元素。所有这些功能都正常工作。
发布于 2013-11-25 22:23:38
我在任何地方都没有看到log.close()。没有这一点,您就不能保证日志实际上被正确地刷新到磁盘。
试着在每个写行之后添加一个log.flush()。它会减慢您的代码速度,但是它应该给出正确的输出。您可能也希望在log.seek(0)之前使用log.read()。
https://stackoverflow.com/questions/20204563
复制相似问题