不要保存空文件

1 投票
2 回答
1085 浏览
提问于 2025-04-18 02:04

我用 f = open('file.txt', 'w') 创建了一个新的文本文件。然后,当我准备写东西的时候,出现了问题,我需要退出,但实际上什么都没写。

不过,这个文件还是被创建了,只是里面是空的。有没有办法在什么都不写的情况下不保存这个文件,还是说我必须在出问题的时候手动删除它呢?

2 个回答

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"
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 文件。

撰写回答