最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 自動(dòng)備份腳本的示例代碼

 更新時(shí)間:2022年12月26日 09:58:51   作者:Sprite.Nym  
這篇文章主要介紹了Python 自動(dòng)備份腳本,本文結(jié)合代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、前言

之前因?yàn)橐咔槌32恢罆?huì)不會(huì)被封在家里,又不想把電腦帶過來(lái)帶過去,就做了這個(gè)自動(dòng)備份的腳本。

功能如下:

  • 自動(dòng)從指定根目錄里將找到的所有指定后綴名的文件備份到一個(gè)備份文件夾里;
  • 將備份文件夾中的文件自動(dòng)和阿里云盤同步;
  • 原文件目錄結(jié)構(gòu)不會(huì)改變;
  • 可以屏蔽根目錄下一級(jí)中不想要的文件夾/文件,下多級(jí)的不行;
  • 定時(shí)運(yùn)行;

二、代碼

創(chuàng)建了一個(gè)AutoTransfer類,這個(gè)類在初始化的時(shí)候會(huì)自動(dòng)讀取配置文件里的參數(shù),如果沒有配置文件也可以后續(xù)調(diào)用函數(shù)時(shí)來(lái)傳參。

調(diào)用類里的move_scripts函數(shù)可以將指定后綴名的文件備份到備份文件夾里。

調(diào)用ali_login函數(shù)登錄阿里云。

調(diào)用find_id函數(shù)可以根據(jù)阿里云盤里的文件夾名查找文件夾id,這個(gè)id后面要用。

調(diào)用sync_folder函數(shù)進(jìn)行同步,file_id就是上面的文件夾id,flag表示同步方式,True代表以本地為主。

import os
import json
from tqdm import tqdm
from shutil import copy
from aligo import Aligo


class AutoTransfer:
    def __init__(self, config_file='transfer_config.json'):
        self.config_file = config_file
        # 自動(dòng)從配置json里獲取參數(shù)
        if os.path.exists(config_file):
            with open(config_file, mode='r', encoding='utf-8') as c:
                cfg = json.load(c)
            for k, v in cfg.items():
                setattr(self, k, v)

    def __setattr__(self, k, v):
        print(f"Current attribute '{k}' is '{v}'")
        self.__dict__[k] = v

    def move_scripts(self, org_root='', new_root='', blocks=[], exts=[]):
        # 更新參數(shù)
        if org_root:
            self.org_root = org_root
        if new_root:
            self.new_root = new_root
        if blocks:
            self.blocks = blocks
        if exts:
            self.exts = exts

        # 檢查參數(shù)有無(wú)缺少
        missing_attr = [attr for attr in ['org_root', 'new_root', 'exts'] if attr not in self.__dict__.keys()]
        if missing_attr:
            raise AttributeError

        folders = os.listdir(self.org_root)
        backup_folders = [os.path.join(self.org_root, fd) for fd in folders if fd not in self.blocks]
        for fdr in tqdm(backup_folders):
            cur_files = self.list_dir(fdr)
            for f in cur_files:
                if os.path.splitext(f)[-1] in self.exts:
                    total_path = f.replace(self.org_root, self.new_root)
                    new_folder, f_name = os.path.split(total_path)
                    if not os.path.exists(new_folder):
                        os.makedirs(new_folder)
                    copy(f, total_path)

        self.remember_configs()

    @staticmethod
    def list_dir(cur_path: str):
        """
        列舉文件根目錄下各文件路徑的函數(shù)。
        :param cur_path: 根目錄。
        :return: 根目錄下所有子目錄里的所有文件。
        """
        file_paths = []
        for root, dirs, files in os.walk(cur_path):
            for file in files:
                file_paths.append(os.path.join(root, file))
        return file_paths

    def ali_login(self):
        self.aligo = Aligo()

    def find_id(self, target_name):
        for f in self.aligo.get_file_list():
            if f.name == target_name:
                return f.file_id

    def sync_folder(self, file_id='', flag=None):
        if file_id:
            self.file_id = file_id
        if flag:
            self.flag = flag
        self.remember_configs()
        self.aligo.sync_folder(self.new_root, self.file_id, self.flag)

    def remember_configs(self):
        config_dict = {k: v for k, v in self.__dict__.items() if
                       k in ['org_root', 'new_root', 'blocks', 'exts', 'file_id', 'flag']}
        with open(self.config_file, mode='w', encoding='utf-8') as f:
            json.dump(config_dict, f)

if __name__ == '__main__':
    at = AutoTransfer()
    at.move_scripts()
    # print(at.find_id('BF_projects'))
    at.ali_login()
    at.sync_folder()

接下來(lái)創(chuàng)建一個(gè).bat文件:

@echo off

D:

cd 腳本路徑

start python 腳本文件名.py

exit

最后創(chuàng)建定時(shí)任務(wù)即可:

如果想每天看著它運(yùn)行,記得勾選“只在用戶登錄時(shí)運(yùn)行”。

到此這篇關(guān)于Python 自動(dòng)備份腳本的文章就介紹到這了,更多相關(guān)Python 自動(dòng)備份腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python列表切片常用操作實(shí)例解析

    Python列表切片常用操作實(shí)例解析

    這篇文章主要介紹了Python列表切片常用操作實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python下的twisted框架入門指引

    Python下的twisted框架入門指引

    這篇文章主要介紹了Python下的twisted框架入門指引,twisted框架是一個(gè)異步機(jī)制的框架,也被許多Python教程所介紹,需要的朋友可以參考下
    2015-04-04
  • Python?NumPy矩陣對(duì)象詳解及方法

    Python?NumPy矩陣對(duì)象詳解及方法

    這篇文章主要介紹了Python?NumPy矩陣對(duì)象詳解及方法,文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-09-09
  • Python3如何解決錯(cuò)誤UnicodeDecodeError

    Python3如何解決錯(cuò)誤UnicodeDecodeError

    當(dāng)我們使用Python3來(lái)處理文本時(shí),一個(gè)非常常見的問題就是UnicodeDecodeError,本文小編就來(lái)深入聊聊這個(gè)錯(cuò)誤是怎么來(lái)的以及怎樣來(lái)解決它吧
    2025-03-03
  • 如何用Python做一個(gè)微信機(jī)器人自動(dòng)拉群

    如何用Python做一個(gè)微信機(jī)器人自動(dòng)拉群

    這篇文章主要介紹了如何用Python做一個(gè)微信機(jī)器人自動(dòng)拉群,微當(dāng)群人數(shù)達(dá)到100人后,用戶無(wú)法再通過掃描群二維碼加入,只能讓用戶先添加群內(nèi)聯(lián)系人微信,再由聯(lián)系人把用戶拉進(jìn)來(lái)。這樣,聯(lián)系人員的私人微信會(huì)添加大量陌生人,給其帶來(lái)不必要的打擾,需要的朋友可以參考下
    2019-07-07
  • Python基礎(chǔ)請(qǐng)求庫(kù)urllib模塊使用深入探究

    Python基礎(chǔ)請(qǐng)求庫(kù)urllib模塊使用深入探究

    在Python中,urllib庫(kù)是一個(gè)強(qiáng)大的模塊,用于處理URLs,它包含了多個(gè)子模塊,其中urllib.request是用于發(fā)出HTTP請(qǐng)求的核心組件,本文將深入探討urllib的基本使用、高級(jí)功能以及一些實(shí)際場(chǎng)景的示例,方便更全面地了解這個(gè)重要的網(wǎng)絡(luò)請(qǐng)求工具
    2024-01-01
  • python 獲取計(jì)算機(jī)的網(wǎng)卡信息

    python 獲取計(jì)算機(jī)的網(wǎng)卡信息

    這篇文章主要介紹了python 獲取計(jì)算機(jī)的網(wǎng)卡信息的方法,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2021-02-02
  • Python使用reportlab模塊生成PDF格式的文檔

    Python使用reportlab模塊生成PDF格式的文檔

    今天小編就為大家分享一篇關(guān)于Python使用reportlab模塊生成PDF格式的文檔,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Python存儲(chǔ)或讀取json時(shí)如何引入額外的雙引號(hào)和轉(zhuǎn)義引號(hào)

    Python存儲(chǔ)或讀取json時(shí)如何引入額外的雙引號(hào)和轉(zhuǎn)義引號(hào)

    這篇文章主要介紹了Python存儲(chǔ)或讀取json時(shí)如何引入額外的雙引號(hào)和轉(zhuǎn)義引號(hào)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python 加密與解密小結(jié)

    Python 加密與解密小結(jié)

    這篇文章主要介紹了Python 加密與解密,使用base64或pycrypto模塊需要的朋友可以參考下
    2018-12-12

最新評(píng)論

腾冲县| 云南省| 思南县| 神木县| 邓州市| 山东| 临城县| 连城县| 安徽省| 柞水县| 玉门市| 历史| 临泉县| 石狮市| 济南市| 隆回县| 开平市| 南康市| 邓州市| 临西县| 西和县| 绿春县| 贵阳市| 衡阳县| 常德市| 大安市| 孝义市| 吴川市| 河津市| 体育| 普宁市| 宿州市| 平山县| 中西区| 广州市| 武乡县| 贵德县| 莒南县| 新河县| 嵊泗县| 大荔县|