怎么用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实现文件备份”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!

    发布于 2022-02-07 23:14:19
    分享
    海报
    61
    上一篇:Git命令怎么使用 下一篇:Java怎么把文件夹打成压缩包并导出
    目录

      忘记密码?

      图形验证码