gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:10 25 4
gpt4 key购买 nike

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

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 中的 closing 并将 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

关于python - 如何在我自己的类方法中使用 `with open`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12670138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com