Bezpieczny i odporny na błędy plik zapisuje
Mam długotrwały proces, który zapisuje wiele rzeczy w pliku. Wynik powinien być wszystkim lub niczym, więc piszę do pliku tymczasowego i zmieniam jego nazwę na prawdziwe nazwisko na końcu. Obecnie mój kod wygląda następująco:
filename = 'whatever'
tmpname = 'whatever' + str(time.time())
with open(tmpname, 'wb') as fp:
fp.write(stuff)
fp.write(more stuff)
if os.path.exists(filename):
os.unlink(filename)
os.rename(tmpname, filename)
Nie jestem z tego zadowolony z kilku powodów:
nie czyści się prawidłowo, jeśli wystąpi wyjątekignoruje problemy z współbieżnościąnie nadaje się do ponownego użycia (potrzebuję tego w różnych miejscach mojego programu)Jakieś sugestie, jak poprawić mój kod? Czy istnieje biblioteka, która może mi pomóc?