Python - f.write()任意限制?

时间:2013-11-25 22:19:59

标签: python

我编写了一个用于测试程序的模块,它将测试数据写入文本文件。我的问题是文件不是我的系统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()从树中删除给定的元素。所有这些功能都正常运行。

1 个答案:

答案 0 :(得分:2)

我在任何地方都看不到log.close()。如果没有它,您不能保证日志实际上已正确刷新到磁盘。

尝试在每个写行后添加log.flush()。它会降低你的代码速度,但它应该给出正确的输出。您可能还希望在log.seek(0)之前log.read()。{/ p>