应用场景:从国内往国外上传,因国际带宽影响,速度很慢,于是做了一个中转FTP,而自动上传需求也就诞生了。
代码地址:https://github.com/coocla/linux/blob/master/ftp/autoupload_ftp.py  
sftp类型:https://github.com/coocla/linux/blob/master/sftp/autoupload_sftp.py

直接贴脚本:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# This is a new file will be automatically uploaded to the ftp python script.
# Author: http://blog.coocla.orgimport pyinotify
import os
from ftplib import FTPWATCHDIR="/tmp/"
HOST="xxxxx"
USER="xxxxx"
PASS="xxxxx"
pid_file="/tmp/monitor_upload.pid"
log_file="/tmp/monitor_upload.log"class OnCreateClick(pyinotify.ProcessEvent):def process_IN_CREATE(self, event):abspath=os.path.join(event.path, event.name)if os.path.isdir(abspath):print "create directory:  %s" % event.nameelif os.path.isfile(abspath):print "create file:  %s" % event.namerelname=abspath.split(WATCHDIR)[1]relpath=os.path.dirname(relname)upload(abspath, relpath, event.name)def main():wm = pyinotify.WatchManager()notifier = pyinotify.Notifier(wm, OnCreateClick())wm.add_watch(WATCHDIR, pyinotify.IN_CREATE, rec=True, auto_add=True)notifier.loop(daemonize=True, pid_file=pid_file, stdout=log_file)def upload(abspath, relpath, filename):ftp = FTP()ftp.connect(HOST)ftp.login(USER, PASS)bufsize = 1024ftp.cwd("xxxxxxx")try:ftp.cwd(relpath)except:for remote_path in relpath.split(os.path.sep):ftp.mkd(remote_path)ftp.cwd(remote_path)filehandler = open(abspath, "rb")try:ftp.storbinary("STOR " + filename, filehandler, bufsize)print "Upload file %s success." % abspathexcept:print "Upload file %s error." % abspathfilehandler.close()ftp.quit()if __name__ == '__main__':if os.path.isfile(pid_file):os.remove(pid_file)main()

转载于:https://blog.51cto.com/siliotto/1598148

pyinotify结合ftplib自动上传新建的文件相关推荐

  1. Typora添加右键新建Markdown文件

    Typora添加右键新建Markdown文件 新建一个 Typora.txt 文本文件,写入: Windows Registry Editor Version 5.00 [HKEY_CLASSES_R ...

  2. Eclipse中新建jsp文件访问页面时乱码问题

    新建.jsp文件,charset和pageEncoding默认是ISO-8859-1,这样的话访问页面时会出现乱码,解决办法:将charset和pageEncoding改为UTF-8(或者GBK/GB ...

  3. eclipse下新建py文件的辅助信息设置

    一.Python In eclipse 使用eclipse编辑Python的朋友知道,在每次新建Py文件的时候,都会有文件的辅助信息,如下: '''Created on 2013-7-4@author ...

  4. python文件操作:新建删除文件,获取拼接路径,罗列文件路径

    1.新建文件 (1)新建目录/文件夹 os.mkdir('Kite') # 新建文件夹,mkdir在linux下是新建一个目录 (2)跨级新建目录 用/来代表路径的不同层级 [必须确保上面的层级是存在 ...

  5. matlab 格式化文件,格式化matlab文件01_新建普通文件

    经常写matlab文件时,有时需要自己文件包含一些格式化信息,比如加上时间.自己的姓名.邮箱等信息,使得文件看起来更正规.更舒服. 下面贴出之前收藏的从网上找的 格式化matlab新建文件 的脚本. ...

  6. windows环境下新建.txt文件,使其默认以UTF-8编码

    问题的引出: windows环境下新建.txt文件,默认以ANSI格式编码.这种格式编码的文件,放到ubuntu上很可能会乱码. 于是我就想,如何设置windows,才能使新建的.txt文件默认以UT ...

  7. 安装Typora情况下,Windows右键新建菜单中增加新建md文件

    搜了好久,看CSDN里都不能用了.留作备忘 在安装了Typora的情况下 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.md] @=& ...

  8. 右键新建中增加新建.md文件

    右键新建中增加新建.md文件 三个步骤 一 随便找个地方创建个.txt文本 里面写 二 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT. ...

  9. vscode 新建cpp文件_利用vscode搭建c

    利用vscode搭建c/c++开发平台 Visualstudio是微软公司专为程序开发人员推出的开源代码编辑器,其具有跨平台,轻量化的特点,可作为轻量化的开发平台使用,通过配置设置,可作为LiteCo ...

最新文章

  1. 嵌入式linux内核oops,Linux编程时遇到Oops提示该如何排查?
  2. 智慧城市“聪明”在哪儿
  3. 学科分类号4个空都填什么_高中英语完形填空的5个解题小技巧,大家都在用
  4. PHP判断客户端的浏览器类型
  5. Java EE 企业网站_基于jsp的企业网站系统-JavaEE实现企业网站系统 - java项目源码...
  6. Python MySQL更新表
  7. django-后台管理-表显示相关
  8. #JAVA# 判断从键盘输入的字符串是否为回文
  9. 三个变量中怎么找出中间值_scratch图形化编程基础练习-变量交换
  10. 计算机组成原理+左冬红,计算机组成原理与接口技术--基于MIPS架构(第2版高等学校电子信息类专业系列教材)...
  11. 机器学习:更多的数据总是优于更好的算法吗?
  12. PRCV2018美图短视频实时分类挑战赛落幕,第一名解决方案技术解读
  13. CMap如何使用,如何实例化?
  14. linux物理内存没用完swap占用大,Linux占用swap分区过高,物理内存还有剩余
  15. 13 个优秀的 Vue 开源项目及合集推荐
  16. [python] 使用Jieba工具中文分词及文本聚类概念
  17. 工控网关linux用什么芯片,重庆工控嵌入式主板原理,工业网关怎么挑
  18. win10共享打印机怎么设置_关于win10网络共享,选择“启用文件和打印机共享”之后,无法保存设置的解决办法...
  19. 计算机硬件故障可分为哪几类,计算机故障可分为硬件和非硬件故障
  20. Cortex-M3 和 M4 的区别

热门文章

  1. html选择器_css的9个常用选择器
  2. uva 11491——Erasing and Winning
  3. 【转载】输出二进制 C
  4. 402. 移掉K位数字 golang
  5. linux文件操作相关函数
  6. 修改之前的myshell使之支持输入输出重定向
  7. 【汇编语言】8086汇编,快速搞定各种寻址方式:立即数寻址 / 寄存器寻址 / 存储器寻址
  8. linux mysql 删除表脚本_linux shell脚本自动删除mysql表前3个月的数据
  9. C++ 网络开发工具
  10. [转帖]USB-C和Thunderbolt 3连接线你搞懂了吗?---没搞明白.