python 写入文件 只能写入一行

ft=open("a",'w')forentryinresult:printentrytry:ft.write(entry+'\n')except:log.error('... 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)
展开
 我来答
百度网友1ae4cb55f
推荐于2017-09-09 · TA获得超过158个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:98.8万
展开全部

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

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

第一种:

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。这一点要注意。

玩转数据处理
2017-08-26 · 数据处理,Python,dotnet
玩转数据处理
采纳数:1613 获赞数:3794

向TA提问 私信TA
展开全部
ft = open("a", 'w')
try:
    ft.write('\n'.join(result))
except:
    log.error('write backup error:'+JOBNAME)
finally:
    ft.close()
os.chdir(basePath)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hexiaoyun128
2014-07-03
知道答主
回答量:1
采纳率:0%
帮助的人:1359
展开全部
try finally中finally是肯定会执行的,你执行一次就关闭文件了,只有一行,回去看看基本的语法知识吧,别跑了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
魂挽歌_
推荐于2017-08-28 · TA获得超过377个赞
知道答主
回答量:80
采纳率:78%
帮助的人:44.7万
展开全部
ft.write(entry+'\n')

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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zw421088
2014-07-03
知道答主
回答量:7
采纳率:0%
帮助的人:8万
展开全部
ft.close()放在FOR循环外面试试~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式