文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用python实现文件备份

2023-06-29 01:53

关注

这篇文章主要介绍“怎么用python实现文件备份”,在日常操作中,相信很多人在怎么用python实现文件备份问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用python实现文件备份”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、需求

用户输入当前目录下任意文件名,程序完成对该文件的备份功能。

备份文件名为xx[备份]后缀,例如:test[备份].txt

2、步骤

接收用户输入的文件名。规划备份文件名。备份文件写入数据。

3、代码实现

(1)接收用户输入目标文件名

old_name = input('请输入您要备份的文件名:')

(2)规划备份文件名

1 提取目标文件后缀。
2.2 组织备份的文件名,xx[备份]后缀。

# 2.1 提取文件后缀点的下标index = old_name.rfind('.')# 2.2 组织新文件名 旧文件名 + [备份] + 后缀new_name = old_name[:index] + '[备份]' + old_name[index:]

(3)备份文件写入数据

1 打开源文件 和 备份文件。
3.2 将源文件数据写入备份文件。
3.3 关闭文件。

# 3.1 打开文件old_f = open(old_name, 'rb')new_f = open(new_name, 'wb')# 3.2 将源文件数据写入备份文件# 如果不确定目标文件大小,循环读取写入,# 当读取出来的数据没有了终止循环while True:    # 每次在原文件中读取的内容    con = old_f.read(1024)    # 表示读取完成了    if len(con) == 0:        # 终止读取        break    # 新文件写入读取的数据    new_f.write(con)# 3.3 关闭文件old_f.close()new_f.close()

(4)思考

如果用户输入.txt,这是一个无效文件,程序如何更改才能限制只有有效的文件名才能备份?

答:添加条件判断即可。

# 有文件名,才能提取后缀# 这里无法取得后缀,拼接的时候没有后缀的变量# 就会报错if index > 0:    postfix = old_name[index:]

(5)完整编码

1)传统实现

# 1. 用户输入目标文件  如:sound.txt.mp3old_name = input('请输入您要备份的文件名:')# 2. 规划备份文件的名字# 2.1 提取后缀 --# 找到名字中的最右侧的点才是后缀的点# 在右侧查找rfind()方法# 获取文件全名中后缀.的位置index = old_name.rfind('.')# 4. 思考:有效文件才备份 .txtif index > 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 原文件读取,备份文件写入# 如果不确定目标文件大小,循环读取写入,当读取出来的数据没有了终止循环while True:    # 每次在原文件中读取的内容    con = old_f.read(1024)    # 表示读取完成了    if len(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.有效文件才备份 .txtif index > 0:    postfix = old_name[index:]# 3.开始备份文件# 打开原文件with open(old_name , 'rb') as file_obj:    # 组织新名字 = 原名字 + [备份] + 后缀    new_name = old_name[:index] + '[备份]' + postfix    # 创建并打开新文件    with open(new_name, 'wb') as new_obj:        # 定义每次读取的大小        chunk = 1024 * 100        while True:            # 从已有的对象中读取数据            content = file_obj.read(chunk)            # 内容读取完毕,终止循环            if not content:                break            # 将读取到的数据写入到新对象中            new_obj.write(content)

两种方式实现的功能一样。

4、再来一个小练习

需求:二进制文件读取(实现方式和上边一样)

# 读取模式# t 读取文本文件(默认值)# b 读取二进制文件file_name = “hello.txt”with open(file_name , 'rb') as file_obj:    # 读取文本文件时,size是以字符为单位的    # 读取二进制文件时,size是以字节为单位    # print(file_obj.read(100))    # 将读取到的内容写出来    # 定义一个新的文件    new_name = 'aa.txt'    with open(new_name , 'wb') as new_obj:        # 定义每次读取的大小        chunk = 1024 * 100        while True :            # 从已有的对象中读取数据            content = file_obj.read(chunk)            # 内容读取完毕,终止循环            if not content :                break            # 将读取到的数据写入到新对象中            new_obj.write(content)

注意:纯文本文件也可以使用二进制方法进行读取操作。

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯