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