2

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() 会导致任何问题吗?--------

4

2 回答 2

3

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

更多参考 http://docs.python.org/2/library/functions.html#open

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

于 2013-07-04T14:35:55.483 回答
2

删除以下行。它始终被评估为 False。

if iOutputFile == 0:
    return

内置openPython 返回文件对象,而不是文件描述符。

>>> f = open('1', 'a')
>>> f
<open file '1', mode 'a' at 0x000000000281C150>
>>> type(f)
<type 'file'>
>>> f == 0
False
于 2013-07-04T14:00:24.587 回答