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

在附加模式下打开时,文件在python中被覆盖,python,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():

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_散列中

读取1000条记录后,我调用WriteFile1()来写入文件,我会[通过调用ClearRec()]清除dict g_Hash中的内容。每次调用WriteFile1()时,它都会覆盖我的输出文件

请帮助我,我想附加数据,而不是覆盖

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

 if iOutputFile == 0:
        return
更新:

ClearRec()代码:


-----------ClearRec()是否会导致任何问题--------

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

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
>f=open('1','a')
>>>f
>>>类型(f)
>>>f==0
假的

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

多参考一下

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


@Talvalin不,那是Java,是python,不是Java。所有功能都可以在文件中运行,只是覆盖问题。您可能必须发布所有代码(如果代码很长,则添加一个粘贴库链接)。我将代码段包装在一个函数中(没有try/except),并使用不同的字典调用WriteFile1()两次,没有发生覆盖。我使用了在Windows 7上运行的Python 2.7.3。@Emma,然后,检查您的代码中是否出现任何
open(IFilePath,“w…”)
。不,只在这个函数中编写文件,没有其他地方written@Emma,如果运行代码时没有
请尝试。。。除了…
,是否发生任何错误?如果打印错误,请回溯,按原样发布。@Emma,不带
试试。。除了..
>>> f = open('1', 'a')
>>> f
<open file '1', mode 'a' at 0x000000000281C150>
>>> type(f)
<type 'file'>
>>> f == 0
False