python with open方法_python – 如何在我自己的类方法中使用`with open`?

我想定义一个类方法直接写入文件而不显式关闭文件.但是如果我像这样返回对象:

class sqlBuilder(object):

...

def save_sql_stat(self, file_n, mode = 'w'):

try:

with open(file_n, mode) as sql_out:

return sql_out

except IOError, IOe:

print str(IOe)

我将无法做到:

t = sqlBuilder(table)

out = t.save_sql_stat(sql_file)

out.write(...)

因为我要得到一个ValueError.没有调用out.close()会有什么好的解决方法?

解决方法:

您可以使用从contextlib关闭并将with语句移到外面…

from contextlib import closing

def save_sql_stat(self, file_n, mode='w'):

try:

return closing(open(file_n, mode))

except IOError as e:

print e.message

sql = SqlBuilder()

with sql.save_sql_stat('testing.sql') as sql_out:

pass # whatever

标签:file-handling,python,methods

来源: https://codeday.me/bug/20190901/1785380.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值