【python----发轫之始】【实现文件备份】

import os
import os.path


class FileBackup(object):
    """
    对文件进行备份
    """

    def __init__(self, src, dist):
        """
        构造函数
        :param src: 原地址
        :param dist: 备份地址
        """
        self.src = src
        self.dist = dist

    def read_src(self):
        """
        读取src目录下所有的文件
        :return:
        """
        ls = os.listdir(self.src)
        for l in ls:
            self.back_up(l)

    def back_up(self, src):
        """
        对传输过来的文件进行检查通过则备份
        :param src: 带检测是否备份的文件
        :return:
        """
        #判断是否有要备份到的地方的地址,无,就创建。
        if not os.path.exists(self.dist):
            os.makedirs(self.dist)
            print("所备份到的地址不存在,已创建成功!")

        #拼接完整路径,便于区分文件与文件夹
        full_src_path = os.path.join(self.src, src)
        full_dist_path = os.path.join(self.dist, src)

        # 检测是否符合备份要求
        if os.path.isfile(full_src_path) and os.path.splitext(full_src_path)[-1].lower() == '.txt':
            print("文件{0}符合备份要求,正在备份......".format(src), end='')

            with open(full_src_path, 'r', encoding='utf-8') as f_src:
                with open(full_dist_path, 'w', encoding='utf-8') as f_dist:
                    print("正在读取......正在写入......", end='')

                    while True:
                        rest = f_src.read(100)
                        if not rest:
                            break
                        f_dist.write(rest)
                    f_dist.flush()
                    print("备份完成!")
        else:
            print("文件不符合要求,正在跳过......")


if __name__ == "__main__":
    # 获得当前文件的地址(去除当前文件名的地址)
    base_path = os.path.dirname(os.path.abspath(__file__))
    # 将文件地址与我们要备份的地址拼接在一起。
    src_path = os.path.join(base_path, 'src')
    print("您要备份的地址为:{0}".format(src_path))
    dist_path = os.path.join(base_path, 'dist')
    print("将要备份到的地址为:{0}".format(dist_path))

    # 获得面向对象函数
    bak = FileBackup(src_path, dist_path)
    bak.read_src()

 

posted @ 2020-05-25 22:08  Vincent&  阅读(212)  评论(0编辑  收藏  举报