我正试图实现类似的功能
from tempfile import TemporaryFile
def open_head(file_path):
with open(file_path, 'r') as f,
TemporaryFile() as tf:
for i in range(0,10):
tf.write(f.read_line())
return tf
以便调用者获得临时文件的所有权。
特别是,我不希望with
语句关闭TemporaryFile
。但是如果在return
之前出现任何问题,我仍然希望 TemporaryFile
由 with
语句关闭。
理想情况下,我想将调用者编写为
with open_head(file_path):
# more code here
这是否有可能?例如,通过编写return do_not_close(tf)
或其他实用功能来实现?
或者我的方法完全错误,有更加Pythonic的方式在函数之间返回TemporaryFiles
或其他资源,并保证异常安全性?
with
语句的整个意义在于自动为您关闭文件。如果这不是您想要的,请不要使用它。 - Mark Ransom