我使用f = open('file.txt', 'w')
创建了一个新的文本文件。然后,当我开始写东西时,有一个问题,我需要退出而不实际写任何东西。
但是,仍然会创建该文件,但该文件为空。有没有办法保存文件,以防万一没有写入文件,或者我必须明确删除它以防出现问题?
答案 0 :(得分:1)
您可以使用atexit
来模拟此行为,但某处可能有更好的方法。
import atexit
def safety_trigger():
try:
os.remove(FILENAME)
except FileNotFoundError:
pass
atexit.register(safety_trigger)
with open(FILENAME,'w') as f:
# do your
# file operations
atexit.unregister(safety_trigger)
这样,当您的脚本启动时,您将其设置为在结束时自动删除FILENAME
。完成写入文件后,您告诉脚本不要在结束时自动删除FILENAME
。
答案 1 :(得分:0)
您可以简单地准备首先写入的信息,并且只执行保存,如果它通过准备完成而没有任何障碍。
info_to_write = ""
try:
info_to_write += "something!"
# etc...
if something_went_wrong:
raise Exception
with open("file.txt","w") as f:
f.write(info_to_write)
catch:
print "Nothing written, no file created"