Python实现自动推本地github博客到远程仓库

Python实现自动推本地github博客到远程仓库

以前的简单版本

通过python中的os模块操作系统命令
详情可参考:Python实现一行代码推本地git到远程仓库

升级版本

本次加入了监听文件修改功能
这样脚本只需在后台运行,即可检测到对应的文件夹中的内容是否变化

如果变化,则调用自动push函数,即可实现推本地仓库到远程中

依赖库的配置

这里我们需要用到一个库watchdog

关于它的安装和使用可以参考:python中文件变化监控-watchdog

代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Created by victor# 本模块的功能:<检测文件夹变化># 导入watchdog对应模块
from watchdog.observers import Observer
from watchdog.events import *
# 导入时间模块
import time
# 导入系统模块
import osdef push(change):print('-'*76)os.system('git add .')os.system('git commit -m\"auto'+change+'\"')os.system('git push -u origin master')print('-'*76)class FileEventHandler(FileSystemEventHandler):# 初始化魔术方法def __init__(self):FileSystemEventHandler.__init__(self)# 文件或文件夹移动def on_moved(self, event):if event.is_directory:print("directory moved from {0} to {1}".format(event.src_path, event.dest_path))else:print("file moved from {0} to {1}".format(event.src_path, event.dest_path))# 这里我们只判断文件修改,如需加入文件夹修改,只需在上面的if条件中调用push函数即可push("文件移动: {0} to {1}".format(event.src_path, event.dest_path))# 创建文件或文件夹def on_created(self, event):if event.is_directory:print("directory created:{0}".format(event.src_path))else:print("file created:{0}".format(event.src_path))push("创建文件:{0}".format(event.src_path))# 删除文件或文件夹def on_deleted(self, event):if event.is_directory:print("directory deleted:{0}".format(event.src_path))else:print("file deleted:{0}".format(event.src_path))push("删除文件:{0}".format(event.src_path))# 移动文件或文件夹def on_modified(self, event):if event.is_directory:print("directory modified:{0}".format(event.src_path))else:print("file modified:{0}".format(event.src_path))push("文件修改:{0}".format(event.src_path))if __name__ == "__main__":# 实例化Observer对象observer = Observer()event_handler = FileEventHandler()# 设置监听目录dis_dir = "./_posts/"observer.schedule(event_handler, dis_dir, True)observer.start()try:while True:# 设置监听频率(间隔周期时间)time.sleep(1)except KeyboardInterrupt:observer.stop()observer.join()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455417.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H.264/MPEG-4 AVC

维基百科&#xff0c;自由的百科全书跳转到&#xff1a; 导航, 搜索 跳过字词转换说明 汉漢▼▲为了阅读方便&#xff0c;本文使用全文手工轉換。转换内容&#xff1a;本文采用电脑和信息技术组全文转换 [查看] • [编辑] • [强制刷新] 以下為本條目單獨的全文轉換&#xff0c…

JavaScript 专题之函数柯里化

JavaScript 专题系列第十三篇&#xff0c;讲解函数柯里化以及如何实现一个 curry 函数 定义 维基百科中对柯里化 (Currying) 的定义为&#xff1a; In mathematics and computer science, currying is the technique of translating the evaluation of a function that takes m…

机器学习模板

根据心情补充&#xff0c;语言都是Python hash&#xff0c;把所有的文本转化成数字 from sklearn.preprocessing import LabelEncoder for c in train.columns:if train[c].dtype object:lbl LabelEncoder()lbl.fit(list(train[c].values) list(test[c].values))train[c] l…

漂亮特殊字体可复制_12个创意字体免费下载网站

今天为大家介绍12个创意字体的网站&#xff0c;这些网站都有提供免费下载的字体哦&#xff0c;希望对大家在创作上面有所帮助。FontSpace在Fontspace上有超过42000种免费字体。在这里字体被整齐的分门归类&#xff0c;帮助你找到想要的字体。除了典型的“serif” “script”等&…

使用postman测试接口

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。在java web开发中使用非常多&#xff0c;经常用来测试接口。 使用postman模拟json数据的发送 第一步:在header里边设置发送数据的类型 Paste_Image.png设置发送数据类型为json&#xff0c;也就是key为Content-…

删除github上的commit历史记录

删除github上的commit历史记录 起步 今天小编发现了git克隆下来的远程库特别大: 经过查询之后发现是每次推送之后都会留下记录缓存&#xff0c;这样很多没用的记录就会占用多余的空间&#xff0c;别人克隆的时候也会多耗费时间&#xff0c;今天我查到了一个清除无用记录的方…

DirectShow组件原理分析及应用

1 DirectX简介  DirectX是Microsoft公司为游戏和其他高性能多媒体应用所提供的一套底层应用程序编程接口。这些接口包括对二维和三维图形&#xff0c;声效和音乐&#xff0c;输入设备以及多玩家网络游戏等的支持。目前DirectX的最高版本是DirectX 9.0。  1.1 DirectX的组成…

接口安全

老大发了篇文章&#xff0c;让看如何写出安全的接口。 如何写出安全的API接口&#xff1f;接口参数加密签名设计思路转载于:https://www.cnblogs.com/Tpf386/p/7053795.html

python中xml模块_python学习第十五天-2(XML模块)

也是一种文本转换形式。importxxxxxxxxxxxxxxxxxxx asxx,可以用xx代替xxxxxxxxxxxxxxxxxxx模块xml文件的新增&#xff0c;修改&#xff0c;删除&#xff0c;查询。新增&#xff1a;​import xml.etree.ElementTreeas ET​new_xmlET.Element(nameList)#创建xml的根节点相当于na…

ubuntu系统下Java环境JDK的安装

Debian Linux下安装jdk 下载压缩包 官网下载对应的.gz包 点击下载 解压文件 创建一个目录用于存放解压后的文件&#xff0c;并解压缩到该目录下 sudo mkdir /opt/java8 sudo tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt/java8修改环境变量 sudo vim ~/.bashrc 进入…

栈溢出笔记1.3 准备Shellcode

经过1.1和1.2节的讲述&#xff0c;我们已经知道了怎样更改EIP的值。程序运行函数之后将跳转到我们设定的位置開始运行&#xff0c;因此&#xff0c;我们须要准备一个自己的程序&#xff0c;接手后面的工作。这是一个什么样的程序&#xff1f;是一个C语言编写的代码&#xff1f;…

DirectShow开发快速入门之慨述

文章来源&#xff1a;http://tech.163.com/school 2005-08-18 10:21:32 来源: 天极网摘要&#xff1a;本篇文档概括性的介绍了DirectShow的主要组成部分&#xff0c;以及一些Directshow的基本概念。熟悉这些基本的知识对于Directshow的应用开发或者过滤器的开发者都会有所帮助…

Android selector中的item的顺序

在selector中&#xff0c;要将默认状态的item放在最后面&#xff0c;因为一旦前面的item满足匹配条件&#xff0c;后面的item就不会去匹配。因此&#xff0c;把默认状态的item放在前面的话&#xff0c;后面的item没有执行的机会转载于:https://www.cnblogs.com/xiaoyuersdch/p/…

权限表使用联合主键吗_天天写 order by,你知道Mysql底层执行流程吗?

前言 在实际的开发中一定会碰到根据某个字段进行排序后来显示结果的需求&#xff0c;但是你真的理解order by在 Mysql 底层是如何执行的吗&#xff1f;假设你要查询城市是苏州的所有人名字&#xff0c;并且按照姓名进行排序返回前 1000 个人的姓名、年龄&#xff0c;这条 sql 语…

nodejs简介

nodejs是啥&#xff1f; Node.js是运行在服务端的JavaScript。 Node.js是一个基于Chrome JavaScript运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境&#xff0c;基于Google的V8引擎&#xff0c;V8引擎执行Javascript的速度非常快&#xff0c;性能非常…

jumpserver v0.4.0 基于 CenOS7 的安装详解

标签&#xff08;linux&#xff09;&#xff1a; jumpserver 笔者Q:972581034 交流群&#xff1a;605799367。有任何疑问可与笔者或加群交流 首首先使用Jumpserver前要理解清楚这三个用户关系: 1.用户&#xff1a; 是指你在web上创建的用户,会在跳板机上创建这个用户,作用就是用…

Node.js中事件的循环

Node.js 事件循环 Node.js 是单进程单线程应用程序&#xff0c;但是通过事件和回调支持并发&#xff0c;所以性能非常高。 Node.js 的每一个 API 都是异步的&#xff0c;并作为一个独立线程运行&#xff0c;使用异步函数调用&#xff0c;并处理并发。 Node.js 基本上所有的事…

python爬boss网站_python之requests爬虫Boss数据

python之requests爬虫Boss数据需要用到的库&#xff1a;reqeusts、lxml没有的可以用直接下载pip install requestspip install lxm这里以python岗位&#xff0c;地点北京为例爬取的数据就是岗位名称、薪资、地点 首先导入需要用到的模块import requestsfrom lxml import etree岗…

live555源代码简介

文章出自&#xff1a;http://blog.csdn.net/imliujie/archive/2008/01/30/2072657.aspx live555源代码简介liveMedia项目的源代码包括四个基本的库&#xff0c;各种测试代码以及IVE555 Media Server。四个基本的库分别是UsageEnvironment&TaskScheduler&#xff0c;groups…

并发无锁队列学习(单生产者单消费者模型)

1、引言 本文介绍单生产者单消费者模型的队列。依据写入队列的内容是定长还是变长&#xff0c;分为单生产者单消费者定长队列和单生产者单消费者变长队列两种。单生产者单消费者模型的队列操作过程是不须要进行加锁的。生产者通过写索引控制入队操作&#xff0c;消费者通过读索…