我使用f = open('file.txt', 'w')
創建了一個新的文本文件。然後,當我開始寫東西時,有一個問題,我需要退出而不寫任何東西。不保存空文件
但是,該文件仍然被創建,但是爲空。有沒有辦法讓文件不被保存以免寫入文件?或者如果出現錯誤,我是否必須明確地刪除文件?
我使用f = open('file.txt', 'w')
創建了一個新的文本文件。然後,當我開始寫東西時,有一個問題,我需要退出而不寫任何東西。不保存空文件
但是,該文件仍然被創建,但是爲空。有沒有辦法讓文件不被保存以免寫入文件?或者如果出現錯誤,我是否必須明確地刪除文件?
您可以使用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,從而提出對現有代碼進行最小更改的解決方案。這對我來說似乎比使用包裝類或將輸出存儲在字符串中更優雅。 – Max
您可以簡單地準備好寫作信息,並且只執行保存操作,如果通過準備就可以順利完成。
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"
的可能重複[刪除日誌文件,如果它後被關閉是空的(http://stackoverflow.com/questions/21028526/delete-log-file-if-it-is-empty-after-被關閉) – mhlester
鏈接的複製中的答案與我在這裏給出的答案完全相同,即使此問題不是專門關於保存日誌文件的, – mhlester
好吧,我該如何關閉它,因爲解決方案可以在別處找到? – user2066480