使用'使用open()'是否可以关闭和删除?
在名为' write_file'的例程中进行计算/提取/查询时,偶尔会遇到错误。
try:
with open(some_file, 'w') as report:
write_file(report, other_variables)
except:
logging.error("Report {} did not compile".format(some_file))
我在try / except中包装了这个,但它仍然将报告编写为异常。
答案 0 :(得分:2)
如果您在遇到任何异常后轻松删除该文件,那么这就足够了:
import os
try:
with open(some_file, 'w') as report:
write_file(report, other_variables)
except:
logging.error("Report {} did not compile".format(some_file))
os.remove(some_file)
请记住,要了解您正在捕捉的异常情况几乎总是更好。
一些免费的建议:如果我担心将废话写入文件,我会将您正在做的事情分成两个不同的步骤。
首先,我会在打开文件之前确定是否有一些计算或语句会抛出异常。如果确实如此,我甚至不打算打开文件。
其次,如果第一步没有异常,我会打开文件并写入。您可以选择围绕try / except块包装此步骤以捕获文件IO错误。
像这样分割你的工作的好处是,如果发生问题,它可以更容易地诊断问题。第一步产生的异常类别必然与第二步产生的异常类别不同。
答案 1 :(得分:0)
经过一番挖掘,我发现,不,你不能关闭并删除一个打开的文件。在这种情况下,使用tempfile更有意义。如果报告正确符合,我可以从tempfile中读取并编写实际报告。这样,脚本就不会创建,编写然后删除实际文件。
with tempfile.TemporaryFile() as report:
write_file(report, other_variables)