在追加模式下打开时,文件在python中被覆盖

时间:2013-07-04 13:24:20

标签: python

WriteFile1()代码片段:

try:
    iOutputFile = open(IFilePath, "a")
    if iOutputFile == 0:
        return

    csvInfoWriter = csv.writer(iOutputFile,  delimiter=',', lineterminator='\n')

    lenBuff = len(g_Hash)
    for value in g_Hash.itervalues():
        iValueLen = len(value)
        for index in range(0, iValueLen):
            csvInfoWriter.writerow(value[index])


    iOutputFile.close()

 except:
    print sys.exc_type

我正在读取一个文件内容,将它们存储在dict g_Hash中。

读完1000条记录之后,我正在调用WriteFile1()来写文件,我从dict g_Hash [通过调用ClearRec()]清除内容。每次我调用WriteFile1()它覆盖我的输出文件。

请帮帮我,我想追加数据,不想覆盖..

编辑:从代码中删除后,仍然会出现问题。

 if iOutputFile == 0:
        return

更新:

ClearRec()代码:

        WriteFile1()
        g_Hash.clear()

----------- ClearRec()会导致任何问题吗? --------

2 个答案:

答案 0 :(得分:2)

删除以下行。它总是被评估为False。

if iOutputFile == 0:
    return

Python中的内置open返回文件对象,而不是文件描述符。

>>> f = open('1', 'a')
>>> f
<open file '1', mode 'a' at 0x000000000281C150>
>>> type(f)
<type 'file'>
>>> f == 0
False

答案 1 :(得分:2)

您需要将附加内容更改为“a +”

进一步参考 http://docs.python.org/2/library/functions.html#open

  

模式'r +','w +'和'a +'打开文件进行更新(注意'w +'截断文件)。将“b”附加到模式以在二进制模式下打开文件,在区分二进制文件和文本文件的系统上;在没有这种区别的系统上,添加'b'没有效果。