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()

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

  1. [自制工具]实现自动推送Hexo博客文章至百度

    写在前面 我们在博客发布文章时,总是希望百度能尽快收录我们的文章,但是如果傻傻等百度爬虫爬到我们这种小站点的文章--不知道要等到何年何月= =基于此,百度站长平台提供了主动推送文章至百度的接口.但是这 ...

  2. github博客自动同步到gitee(保姆级教程)

    github博客自动同步到gitee(保姆级教程) 前言: 由于国内网访问github实在太慢!虽然在公司可以连接外网访问还算可以,但是回学校想看看博客或者分享给别人的时候经常会崩掉!于是我想可不可以 ...

  3. 免费的Github博客搭建(python+pelican)

    每个入门程序员或多都想拥有一个自己博客站点,苦于高额的服务器费用和较为麻烦的操作步骤,你完全可以通过 GitHub Pages来实现一个免费,可定制的书写,记录生活,技术分享的平台. 为什么使用 Gi ...

  4. Hexo+Github: 博客网站搭建完全教程(看这篇就够了)

    本篇教程首次发布在个人博客:sunhwee.com,想要获得最佳阅读体验,欢迎前往,建议用电脑查看教程文档. 文章目录 阅读须知 博客开源 前言 第一部分 搭建 Hexo搭建步骤 1. 安装Git 2 ...

  5. 30分钟(零成本)快速搭建markdown个人github博客

    零成本-30分钟快速搭建markdown个人github博客 摘要:本文以mkdocs 开源文档工具 + markdown预发编写文档,最终生成简易个人github博客.最终效果如:https://s ...

  6. 转:20分钟教你使用hexo搭建github博客

    注册Github账号 这里我们就不多讲了,小伙伴们可以点击这里,进入官网进行注册. 创建仓库 图片来自Github 登录账号后,在Github页面的右上方选择New repository进行仓库的创建 ...

  7. 利用Octopress搭建一个Github博客

    小引 Octopress是利用Jekyll博客引擎开发的一个博客系统,生成的静态页面能够很好的在github page上展现.号称是hacker专属的一个博客系统(A blogging framewo ...

  8. Hexo+GitHub 博客部署 个人踩坑记录(一)

    Hexo+GitHub 博客部署 个人踩坑记录(一) 前言 博客的作用 编程学习本身是持续性的学习行为,说明所学习的内容是在持续地增加.这要求我们要学会阶段性总结自己所学的东西,复习并巩固.所以写文章 ...

  9. 实现在CentOS7环境下搭建个人github博客

    实现在CentOS7环境下搭建个人github博客 主机要求:必须是centos环境版本可以不一样,假如你用的是其他版本的linux系统,只不过是命令不太一样. Tips:这里提前说下,对于Ubunt ...

最新文章

  1. Delphi - 我的代码之窗体移动
  2. 黄聪:SQL server 2005高可用性之----数据库镜像
  3. 30岁二刷博士,17个月发6篇一作获顶会最佳!现实版人生重开模拟器
  4. python怎么让x轴45°展示_python opencv实现任意角度的透视变换实例代码
  5. 三角网导线平差实例_网平差三角网三边导线网.doc
  6. Windows Embedded CE 6.0开发初体验(四)跑个应用程序先
  7. 网络事件触发自己主动登录
  8. 回顾Swift 3,展望Swift 4
  9. 【编译原理笔记14】中间代码生成:布尔表达式的回填,控制流语句的回填,switch语句的翻译,过程调用语句的翻译
  10. 【实践】HMM模型在贝壳对话系统中的应用
  11. 符号“”和const在函数里不同位置的用法
  12. Redhat8认证考试(第三题)
  13. iphone8进入恢复模式或DFU模式
  14. Heaven of Imaginary(PKUSC2018)
  15. 下载Eclipse压缩包
  16. 华为mate30pro和华为p40pro哪个好
  17. UML 有几种关系图标
  18. 萌新linux的基础笔记
  19. 短视频脚本撰写小技巧,不同的短视频类型要使用不同的撰写方法
  20. 论信息系统人力资源管理

热门文章

  1. 如何读H.264的标准和代码
  2. 解决:[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective set
  3. IntelliJ Idea 2017 免费激活方法
  4. RabbitMQ MQTT协议和AMQP协议
  5. 深度优先遍历解决连通域求解问题-python实现
  6. CSS中的px与物理像素、逻辑像素、1px边框问题
  7. 解决Coldfusion连接MySQL数据库的问题
  8. Safengine Android so加密
  9. [Grid Layout] Place grid items on a grid using grid-column and grid-row
  10. gulp教程之gulp-minify-css【gulp-clean-css】