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) 展开
for entry in result :
print entry
try:
ft.write(entry+'\n')
except:
log.error('write backup error:'+JOBNAME)
finally:
ft.close()
os.chdir(basePath) 展开
6个回答
展开全部
问题描述:在循环中将内容写入文件,但是本段代码在第一次循环中将文件关闭了,所以后边的写不进去。
解决方案:有两种解决方法
第一种:
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。这一点要注意。
展开全部
ft = open("a", 'w')
try:
ft.write('\n'.join(result))
except:
log.error('write backup error:'+JOBNAME)
finally:
ft.close()
os.chdir(basePath)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
try finally中finally是肯定会执行的,你执行一次就关闭文件了,只有一行,回去看看基本的语法知识吧,别跑了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ft.write(entry+'\n')
这里没有写写入模式,使用追加模式 “a”
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ft.close()放在FOR循环外面试试~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询