用python实现文件备份

目录
  • 1、需求
  • 2、步骤
  • 3、代码实现
    • (1)接收用户输入目标文件名
    • (2)规划备份文件名
    • (3)备份文件写入数据
    • (4)思考
    • (5)完整编码
  • 4、再来一个小练习
  • 总结

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 将源文件数据写入备份文件
# 如果不确定目标文件大小,循环读取写入,
# 当读取出来的数据没有了终止循环
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.mp3
old_name = input('请输入您要备份的文件名:')

# 2. 规划备份文件的名字
# 2.1 提取后缀 --
# 找到名字中的最右侧的点才是后缀的点
# 在右侧查找rfind()方法
# 获取文件全名中后缀.的位置
index = old_name.rfind('.')

# 4. 思考:有效文件才备份 .txt
if 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.mp3
old_name = input('请输入您要备份的文件名:')

# 获取文件全名中后缀.的位置
index = old_name.rfind('.')

# 4.有效文件才备份 .txt
if 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实现文件备份的文章就介绍到这了,更多相关python文件备份内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python创建文件备份的脚本

    制作文件备份 打开原文件 old_f_name = input("请输入备份的文件路径:") old_f = open(old_f_name, "r") 打开新文件 new_f_name = "[复件]" + old_f_name 123.txt -> 123[复件].txt 123 + "[复件]" + .txt index = old_f_name.rfind(".") # 获取.对应的后缀 if

  • python实现windows下文件备份脚本

    在windows下用python脚本实现文件的备份,参考<A Byte of Python3>第十一章(Page59). #!/usr/bin/python # -*- coding: cp936 -*- import os import time source = ['E:\\'] # 待备份文件在E盘根目录下 running = True while running: your_source = raw_input("Your own path or your own file

  • 在 Python 中使用 7zip 备份文件的操作

    我在按照 Byte of python一步步的学习Python, 在学到'解决方案'的时候,原文的实例 "backup_ver1.py" 是用zip备份文件. 这里面我有几点不一样的地方: 我的电脑没有zip,我用的是7zip: 原文直接用'zip'命令备份,我直接使用7z命令报错. 使用7z命令备份之前,需要把7zip的安装目录添加到系统环境变量Path中:这时候我可以在CMD中执行7z,但是在python中还是报错,"7z is not recognized as an

  • python实现文件的备份流程详解

    python实现输入要备份的文件名称:test.txt 12行代码实现文件备份功能 第一步:打开我们的pycharm软件,然后新建一个Python文件 第二步:新建好我们的Python文件后,我们在编辑界面输入以下代码: oldfilename=input("请输入要备份的文件名:") #输入需要备份的旧文件名 oldfile=open(oldfilename,'r') #打开旧文件 if oldfile: #如果文件存在,则执行下面的语句 fileflagnum=oldfilenam

  • python基础之文件的备份以及定位

    目录 小型文件备份 备份大型文件 总结 小型文件备份 # 文件的备份 def copyFile(): # 接收用户输入的文件名 old_file=input('请输入要备份的文件名:') file_list=old_file.split('.') # 构造新的文件名.加上备份的后缀 new_file=file_list[0]+'_备份.'+file_list[1] old_f=open(old_file,'r') #打开需要备份的文件 new_f=open(new_file,'w') #以写的模

  • 用python实现文件备份

    目录 1.需求 2.步骤 3.代码实现 (1)接收用户输入目标文件名 (2)规划备份文件名 (3)备份文件写入数据 (4)思考 (5)完整编码 4.再来一个小练习 总结 1.需求 用户输入当前目录下任意文件名,程序完成对该文件的备份功能. 备份文件名为xx[备份]后缀,例如:test[备份].txt. 2.步骤 接收用户输入的文件名.规划备份文件名.备份文件写入数据. 3.代码实现 (1)接收用户输入目标文件名 old_name = input('请输入您要备份的文件名:') (2)规划备份文件

  • Python Log文件大小设置及备份的方法

    一.配置文件大小及数量 日志文件代码需要引入RotatingFileHandler方法,如下: from logging.handlers import RotatingFileHandler 配置文件大小及数量,比如:"设置写入文件,如果文件超过1M大小时,切割日志文件,仅保留3个文件",如下所示: # 写入文件,如果文件超过1M大小时,切割日志文件,仅保留3个文件 logger_handler = RotatingFileHandler(filename=log_path, max

  • Python实现配置文件备份的方法

    本文实例讲述了Python实现配置文件备份的方法.分享给大家供大家参考.具体如下: 这里平台为Linux: #!/usr/bin/python #Author:gdlinjianying@qq.com import os import time source = ['/etc/sysconfig/network-scripts', '/etc/sysconfig/network', '/etc/resolv.conf'] target_dir = '/opt/' target = target_

  • python简单实现获取当前时间

    说起计算机中的时间,还有一些比较有意思的事,比如我们经常听到的Unix时间戳,UTC时间,格林威治时间等,从表示上来讲他们基本属于同一个东西,因为他们的时间表示都是从1970年.1月.1日开始到现在的秒数,到这有人就有问题了,为毛是从这个时间点开始的呢?因为这天呀发生了一件大事,UNIX操作系统诞生了,这UNIX诞生可有来历,他是一个歪果仁利用老婆孩子外出度假的时间来完成的,我假设大家了解操作系统的复杂性,那么我们预估他老婆要外出几年才能完成UNIX系统的编写?3年?5年? 错,人家老婆就去了一

  • 两个命令把 Vim 打造成 Python IDE的方法

    运行下面两个命令,即可把 Vim(含插件)配置成 Python IDE.目前支持 MAC 和 Ubuntu. curl -O https://raw.githubusercontent.com/vince67/v7_config/master/vim.sh bash vim.sh 截图示例 做了什么 写了个方便的bash脚本,用来配置VIM 使用的配置来自 fisa-vim-config 效果爆炸 附脚本: •注意一: 每次运行本脚本,会把旧的 ~/.vimrc 文件备份到 /tmp/vimrc

  • python进程管理工具supervisor的安装与使用教程

    前言 在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便.如果有一个工具能够实现每台机器上多个进程的简单高效中心化管理将是非常方便的.于是Supervisord工具应运而生.与Supervisord类似的工具包括monit, daemontools和runit.下面话不多说了,来一起看看详细的介绍吧. 安装 Supervisord是运行在Python环境下的服务监控程序,所以在安装supervisord之前必须

  • python实现定时自动备份文件到其他主机的实例代码

    定时将源文件或目录使用WinRAR压缩并自动备份到本地或网络上的主机 1.确保WinRAR安装在默认路径或者把WinRAR.exe添加到环境变量中 2.在代码里的sources填写备份的文件或目录,target_dir填写备份目的目录 3.delete_source_file为备份完后是否删除源文件(不删除子文件夹) 4.备份成功/失败后生成备份日志 按照格式,填写源目的: sources = [r'E:\目录1', r'E:\目录2\b.txt'] #例:= [ r'E:\test\1234.

  • Python实现修改文件内容的方法分析

    本文实例讲述了Python实现修改文件内容的方法.分享给大家供大家参考,具体如下: 1 替换文件中的一行 1.1 修改原文件 ① 要把文件中的一行Server=192.168.22.22中的IP地址替换掉,因此把整行替换. data = '' with open('zhai.conf', 'r+') as f: for line in f.readlines(): if(line.find('Server') == 0): line = 'Server=%s' % ('192.168.1.1',

随机推荐