怎么用python实现文件备份
怎么用python实现文件备份
这篇文章主要介绍“怎么用python实现文件备份”,在日常操作中,相信很多人在怎么用python实现文件备份问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用python实现文件备份”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1、需求
用户输入当前目录下任意文件名,程序完成对该文件的备份功能。
备份文件名为xx[备份]后缀
,例如:test[备份].txt
。
2、步骤
接收用户输入的文件名。规划备份文件名。备份文件写入数据。
3、代码实现
(1)接收用户输入目标文件名
old_name=input('请输入您要备份的文件名:')
(2)规划备份文件名
2.1 提取目标文件后缀。
2.2 组织备份的文件名,xx[备份]后缀。
#2.1提取文件后缀点的下标index=old_name.rfind('.')#2.2组织新文件名旧文件名+[备份]+后缀new_name=old_name[:index]+'[备份]'+old_name[index:]
(3)备份文件写入数据
3.1 打开源文件 和 备份文件。
3.2 将源文件数据写入备份文件。
3.3 关闭文件。
#3.1打开文件old_f=open(old_name,'rb')new_f=open(new_name,'wb')#3.2将源文件数据写入备份文件#如果不确定目标文件大小,循环读取写入,#当读取出来的数据没有了终止循环whileTrue:#每次在原文件中读取的内容con=old_f.read(1024)#表示读取完成了iflen(con)==0:#终止读取break#新文件写入读取的数据new_f.write(con)#3.3关闭文件old_f.close()new_f.close()
(4)思考
如果用户输入.txt
,这是一个无效文件,程序如何更改才能限制只有有效的文件名才能备份?
答:添加条件判断即可。
#有文件名,才能提取后缀#这里无法取得后缀,拼接的时候没有后缀的变量#就会报错ifindex>0:postfix=old_name[index:]
(5)完整编码
1)传统实现
#1.用户输入目标文件如:sound.txt.mp3old_name=input('请输入您要备份的文件名:')#2.规划备份文件的名字#2.1提取后缀--#找到名字中的最右侧的点才是后缀的点#在右侧查找rfind()方法#获取文件全名中后缀.的位置index=old_name.rfind('.')#4.思考:有效文件才备份.txtifindex>0:#提取后缀,这里提取不到,后面拼接新文件名字的时候就会报错postfix=old_name[index:]#2.2组织新名字=原名字+[备份]+后缀#原名字就是字符串中的一部分子串--切片[开始:结束:步长]#new_name=old_name[:index]+'[备份]'+old_name[index:]new_name=old_name[:index]+'[备份]'+postfix#3.备份文件写入数据(数据和原文件一样)#3.1打开原文件和备份文件old_f=open(old_name,'rb')new_f=open(new_name,'wb')#3.2原文件读取,备份文件写入#如果不确定目标文件大小,循环读取写入,当读取出来的数据没有了终止循环whileTrue:#每次在原文件中读取的内容con=old_f.read(1024)#表示读取完成了iflen(con)==0:#终止读取break#新文件写入读取的数据new_f.write(con)#3.3关闭文件old_f.close()new_f.close()
2)实际工作实现
#1.用户输入目标文件如:sound.txt.mp3old_name=input('请输入您要备份的文件名:')#获取文件全名中后缀.的位置index=old_name.rfind('.')#4.有效文件才备份.txtifindex>0:postfix=old_name[index:]#3.开始备份文件#打开原文件withopen(old_name,'rb')asfile_obj:#组织新名字=原名字+[备份]+后缀new_name=old_name[:index]+'[备份]'+postfix#创建并打开新文件withopen(new_name,'wb')asnew_obj:#定义每次读取的大小chunk=1024*100whileTrue:#从已有的对象中读取数据content=file_obj.read(chunk)#内容读取完毕,终止循环ifnotcontent:break#将读取到的数据写入到新对象中new_obj.write(content)
两种方式实现的功能一样。
4、再来一个小练习
需求:二进制文件读取(实现方式和上边一样)
#读取模式#t读取文本文件(默认值)#b读取二进制文件file_name=“hello.txt”withopen(file_name,'rb')asfile_obj:#读取文本文件时,size是以字符为单位的#读取二进制文件时,size是以字节为单位#print(file_obj.read(100))#将读取到的内容写出来#定义一个新的文件new_name='aa.txt'withopen(new_name,'wb')asnew_obj:#定义每次读取的大小chunk=1024*100whileTrue:#从已有的对象中读取数据content=file_obj.read(chunk)#内容读取完毕,终止循环ifnotcontent:break#将读取到的数据写入到新对象中new_obj.write(content)
注意:纯文本文件也可以使用二进制方法进行读取操作。
到此,关于“怎么用python实现文件备份”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!
推荐阅读
-
Python 3.12 新特性解析:模式匹配增强与性能优化实战
-
Lightly IDE 深度评测:轻量级 Python 开发工具是否适合团队协作?
-
VS Code 自定义配置:JSON 文件修改、代码片段与任务自动化脚本
-
Python 虚拟环境选择:venv、conda、poetry 的适用场景对比
-
PyCharm+GitHub Copilot:Python 开发中 AI 辅助编码的最佳实践
-
PyCharm 无法识别虚拟环境?5 步排查 Python 解释器配置问题
-
数据科学工具链:Jupyter Notebook+RStudio+Python 的协同工作流
-
Python 3.12 新特性:模式匹配增强与性能改进实战
-
Lightly IDE 适合谁?轻量级 Python 开发工具深度评测
-
Python IDE 终极对比:PyCharm vs VS Code vs Jupyter Notebook