当前位置:网站首页>惨了,搞坏了领导的机密文件,吐血分享备份文件的代码技巧
惨了,搞坏了领导的机密文件,吐血分享备份文件的代码技巧
2022-04-23 06:37:00 【Python编程杰哥】
今天分享的不是具体的Python知识点,而是一个很有用的实战经验。
抛出问题
来假设这样一个场景:
- 你要写一个Python程序,每天早上8点生成或更新一份很重要的文件,就叫「maishu.txt」吧。
- 假设文件大小有100M,你生成和写入文件可能需要1分钟左右。
- 这份文件被放在一个目录下,每天24小时都有人或其他程序访问读取。
如何做可以确保以下亮点:
1.保证这个文件时刻都可以被使用,或者最大化可用时间。
2.如果出了问题,可以马上恢复,不会影响使用者。
继续读之前,先想想看:「你会如何做?」
笨办法
先说说普通青年的做法,也是最不好的做法。
以下为伪代码,不能运行,仅用于说明解决问题思路。
with open('maishu.txt', 'w') as f:
# 写入文件的代码逻辑
# 写入时间约一分钟
这种做法的问题在于:
- 一旦开始写入,文件会被清空并逐渐添加内容,这会造成当时在读取的人读到空的文件,或者不完全的文件,造成读取程序崩溃
- 也就是说,有约1分钟时间,这个文件是不可用的,可能会给下游带来严重错误。
- 如果写入过程出错,无法瞬间恢复,会造成系统中断,可能需要人工介入
这种做法带来的重大问题,我在实际工作中见过几次。读的文件不合法,读取或写入程序崩溃等等都有。犯错误的同事,已经不知道流落在何方。
好办法
更好一点的办法是这样的:
- 先写入另外一个文件,这样不影响原来的文件的读取和使用
- 写入完成后,再做文件重命名。
伪代码如下:
with open('maishu20220425.txt', 'w') as f:
# 写入文件的代码逻辑
# 写入时间约一分钟
# 把原来的文件备份一下
rename('maishu.txt', 'maishu20220424.txt')
# 把新文件重命名成主文件
rename('maishu20220425.txt', 'maishu.txt')
因为最后一刻只是给文件重命名,这个过程很快,也不容易出错。就算出错了,也可以恢复原来的文件。所以可以很好地解决以上问题。
再改进一点
由于以上备份会产生多个文件,占用很多空间,所以一般代码只会保留5份最新的数据。伪代码如下:
with open('maishu20220425.txt', 'w') as f:
# 写入文件的代码逻辑
# 写入时间约一分钟
# 把原来的文件备份一下
rename('maishu.txt', 'maishu20220424.txt')
# 把新文件重命名成主文件
rename('maishu20220425.txt', 'maishu.txt')
# 删除最老的一份备份,只保留最新的5份
delete_backup(keep=5)
这个方法基本上是行业最佳实践,很多场合都是这么做的。比如自动化部署通常就是这么做的。这样可以在发布过程中不影响程序正常运行,一旦出了问题还可以瞬间回滚到之前的版本。
明白了吗?下次如果你碰到类似的场合,记得使用上面的方法,免得本想展示一下代码技能,结果弄巧成拙
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

Python资料、技术、课程、解答、咨询也可以直接点击下面名片,
添加官方客服斯琪↓
版权声明
本文为[Python编程杰哥]所创,转载请带上原文链接,感谢
https://blog.csdn.net/xx_nm98/article/details/124354497
边栏推荐
- nacos源码分析思路
- Intranet penetration series: ICMP of Intranet tunnel_ Tran
- Intranet penetration series: icmptunnel of Intranet tunnel (by master dhavalkapil)
- C problem of marking the position of polygons surrounded by multiple rectangles
- BUUCTF MISC刷题
- Automatically fit single line text into the target rectangle
- The displayed amount of ABAP ALV is inconsistent with the exported amount
- Research on system and software security (I)
- Internal network security attack and defense: a practical guide to penetration testing (VII): cross domain attack analysis and defense
- Chapter VII asset impairment
猜你喜欢

When using flash, the code ends automatically without an error, the connection cannot be maintained, and the URL cannot be accessed.

第四章 无形资产
![BUUCTF [ACTF2020 新生赛]Include1](/img/47/b8f46037f7e9476b8e01e8d6a7857a.png)
BUUCTF [ACTF2020 新生赛]Include1

Export all SVG files in the specified path into pictures in PNG format (thumbnail or original size)

yum源仓库本地搭建的两种方法

Chapter V investment real estate

Ribbon启动流程
![云计算赛项--2020年赛题基础部分[任务3]](/img/a2/36ff5eafd18534207e6ab01422ea59.png)
云计算赛项--2020年赛题基础部分[任务3]

Intranet penetration series: dns2tcp of Intranet tunnel

TA notes of Zhuang understand (VII) < Lambert + Phong + shadow + 3evcolor + Ao >
随机推荐
SAP sto with billing process and configuration
Chapter V investment real estate
Unity C single case mode learning review notes
Buctf MISC brossage
Learning records of some shooting ranges: sqli labs, upload labs, XSS
Houdini > variable building roads, learning process notes
Internal network security attack and defense: a practical guide to penetration testing (IV): Authority improvement analysis and defense
Mysql database backup and recovery under Linux (full + incremental)
Intranet penetration series: dnscat2 of Intranet tunnel
Upload labs range practice
《内网安全攻防:渗透测试实战指南》读书笔记(五):域内横向移动分析及防御
雲計算技能大賽 -- openstack私有雲環境 第一部分
About USB flash drive data prompt raw, need to format, data recovery notes
Three minutes to teach you to use Houdini fluid > > to solve particle fluid droplets
KVM安装部署
Post of experience in preparation for guarantee and research -- the 18th (2021) Central South planning department promoted the exemption to Zhejiang University Institute of Technology
《内网安全攻防:渗透测试实战指南》读书笔记(六):域控制器安全
利用sqlmap注入获取网址管理员账号密码
Feign源码分析
云计算技能大赛 -- openstack私有云环境 第一部分