歡迎訪問「分鐘」系列。「花3分鐘時間」,學(xué)習(xí)或溫習(xí)一個知識點。今天是第096篇。
今天分享的不是具體的知識點,而是一個很有用的實戰(zhàn)經(jīng)驗。
拋出問題
來假設(shè)這樣一個場景:
如何做可以確保以下亮點:
保證這個文件時刻都可以被使用,或者最大化可用時間。如果出了問題,可以馬上恢復(fù),不會影響使用者。
繼續(xù)讀之前,先想想看:「你會如何做?」
笨辦法
先說說普通青年的做法,也是最不好的做法。
以下為偽代碼,不能運行,僅用于說明解決問題思路。
with?open('maishu.txt',?'w')?as?f:
??#?寫入文件的代碼邏輯
??#?寫入時間約一分鐘
這種做法的問題在于:
這種做法帶來的重大問題,我在實際工作中見過幾次。讀的文件不合法,讀取或?qū)懭氤绦虮罎⒌鹊榷加小7稿e誤的同事,已經(jīng)不知道流落在何方。
好辦法
更好一點的辦法是這樣的:
偽代碼如下:
with?open('maishu20220425.txt',?'w')?as?f:
??#?寫入文件的代碼邏輯
??#?寫入時間約一分鐘
??
#?把原來的文件備份一下
rename('maishu.txt',?'maishu20220424.txt')
#?把新文件重命名成主文件
rename('maishu20220425.txt',?'maishu.txt')
因為最后一刻只是給文件重命名,這個過程很快文件備份錯誤數(shù)據(jù)繼續(xù),也不容易出錯。就算出錯了,也可以恢復(fù)原來的文件。所以可以很好地解決以上問題。
再改進(jìn)一點
由于以上備份會產(chǎn)生多個文件,占用很多空間,所以一般代碼只會保留5份最新的數(shù)據(jù)。偽代碼如下:
with?open('maishu20220425.txt',?'w')?as?f:
??#?寫入文件的代碼邏輯
??#?寫入時間約一分鐘
??
#?把原來的文件備份一下
rename('maishu.txt',?'maishu20220424.txt')
#?把新文件重命名成主文件
rename('maishu20220425.txt',?'maishu.txt')
#?刪除最老的一份備份,只保留最新的5份
delete_backup(keep=5)
這個方法基本上是行業(yè)最佳實踐,很多場合都是這么做的。比如自動化部署通常就是這么做的。這樣可以在發(fā)布過程中不影響程序正常運行,一旦出了問題還可以瞬間回滾到之前的版本。
明白了嗎?下次如果你碰到類似的場合,記得使用上面的方法,免得本想展示一下代碼技能,結(jié)果弄巧成拙。如果喜歡,記得點贊!
?
新的一年,想加速學(xué)習(xí),獲得專業(yè)的指導(dǎo),30天學(xué)會一門技能!
歡迎參加麥?zhǔn)鍖崙?zhàn)訓(xùn)練營,「入門營」,「爬蟲營」,「辦公自動化營」同步開放。
詳情點這里:
?
如果你希望我更新某個特定小知識文件備份錯誤數(shù)據(jù)繼續(xù),歡迎給我留言。
我是「麥?zhǔn)濉梗摹妇幊獭梗摹赋绦騿T人生」。