python 写入文件 只能写入一行

ft = open("a", 'w')
for entry in result :
print entry
try:
ft.write(entry+'\n')
except:
log.error('write backup error:'+JOBNAME)
finally:
ft.close()
os.chdir(basePath)

问题描述:在循环中将内容写入文件,但是本段代码在第一次循环中将文件关闭了,所以后边的写不进去。

解决方案:有两种解决方法

第一种:

ft = open("a", 'w')
for entry in result :
    print entry
    try:
    ft.write(entry+'\n')
    except:
    log.error('write backup error:'+JOBNAME)

ft.close()#在内容写完后再关闭文件
os.chdir(basePath)

第二种:

for entry in result :
    #注意:在每次进入循环后先打开文件
    ft = open("a", 'a')#注意:第二个参数,是以追加形式打开,否则还是只有一行
    print entry
    try:
    ft.write(entry+'\n')
    except:
    log.error('write backup error:'+JOBNAME)
    finally:
    ft.close()
os.chdir(basePath)

建议使用第一种,因为第二种频繁对文件进行打开和关闭操作,效率较低。

对于文件操作建议你看看这篇博客 http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html

总结:注意文件open(filepath, mode)方法,第一个参数是文件路径,第二个是文件操作模式。其中如果模式是”w“那么是以写的方式打开,那么原先的内容都没了,而模式‘a’是以追加写操作,是在文件末尾追加,不会擦除之前的内容,还有其他的模式请查看上边那篇博客。

此外,对于python中的try-except-finally的问题,这个是当try-except之间的代码没有抛出异常的情况下,执行try和finally;当try-except之间的代码出错时,执行except和finally。这一点要注意。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-26
ft = open("a", 'w')
try:
    ft.write('\n'.join(result))
except:
    log.error('write backup error:'+JOBNAME)
finally:
    ft.close()
os.chdir(basePath)

第2个回答  2014-07-03
try finally中finally是肯定会执行的,你执行一次就关闭文件了,只有一行,回去看看基本的语法知识吧,别跑了
第3个回答  推荐于2017-08-28
ft.write(entry+'\n')

这里没有写写入模式,使用追加模式 “a”

本回答被网友采纳
第4个回答  2014-07-03
ft.close()放在FOR循环外面试试~
第5个回答  2017-08-26
ft = open("a", 'w')
try:
    ft.write('\n'.join(result))
except:
    log.error('write backup error:'+JOBNAME)
finally:
    ft.close()
os.chdir(basePath)

第6个回答  2014-07-03
try finally中finally是肯定会执行的,你执行一次就关闭文件了,只有一行,回去看看基本的语法知识吧,别跑了
第7个回答  推荐于2017-08-28
ft.write(entry+'\n')

这里没有写写入模式,使用追加模式 “a”

本回答被网友采纳
第8个回答  2014-07-03
ft.close()放在FOR循环外面试试~
相似回答