pyinotify结合ftplib自动上传新建的文件
应用场景:从国内往国外上传,因国际带宽影响,速度很慢,于是做了一个中转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自动上传新建的文件相关推荐
- Typora添加右键新建Markdown文件
Typora添加右键新建Markdown文件 新建一个 Typora.txt 文本文件,写入: Windows Registry Editor Version 5.00 [HKEY_CLASSES_R ...
- Eclipse中新建jsp文件访问页面时乱码问题
新建.jsp文件,charset和pageEncoding默认是ISO-8859-1,这样的话访问页面时会出现乱码,解决办法:将charset和pageEncoding改为UTF-8(或者GBK/GB ...
- eclipse下新建py文件的辅助信息设置
一.Python In eclipse 使用eclipse编辑Python的朋友知道,在每次新建Py文件的时候,都会有文件的辅助信息,如下: '''Created on 2013-7-4@author ...
- python文件操作:新建删除文件,获取拼接路径,罗列文件路径
1.新建文件 (1)新建目录/文件夹 os.mkdir('Kite') # 新建文件夹,mkdir在linux下是新建一个目录 (2)跨级新建目录 用/来代表路径的不同层级 [必须确保上面的层级是存在 ...
- matlab 格式化文件,格式化matlab文件01_新建普通文件
经常写matlab文件时,有时需要自己文件包含一些格式化信息,比如加上时间.自己的姓名.邮箱等信息,使得文件看起来更正规.更舒服. 下面贴出之前收藏的从网上找的 格式化matlab新建文件 的脚本. ...
- windows环境下新建.txt文件,使其默认以UTF-8编码
问题的引出: windows环境下新建.txt文件,默认以ANSI格式编码.这种格式编码的文件,放到ubuntu上很可能会乱码. 于是我就想,如何设置windows,才能使新建的.txt文件默认以UT ...
- 安装Typora情况下,Windows右键新建菜单中增加新建md文件
搜了好久,看CSDN里都不能用了.留作备忘 在安装了Typora的情况下 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.md] @=& ...
- 右键新建中增加新建.md文件
右键新建中增加新建.md文件 三个步骤 一 随便找个地方创建个.txt文本 里面写 二 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT. ...
- vscode 新建cpp文件_利用vscode搭建c
利用vscode搭建c/c++开发平台 Visualstudio是微软公司专为程序开发人员推出的开源代码编辑器,其具有跨平台,轻量化的特点,可作为轻量化的开发平台使用,通过配置设置,可作为LiteCo ...
最新文章
- 嵌入式linux内核oops,Linux编程时遇到Oops提示该如何排查?
- 智慧城市“聪明”在哪儿
- 学科分类号4个空都填什么_高中英语完形填空的5个解题小技巧,大家都在用
- PHP判断客户端的浏览器类型
- Java EE 企业网站_基于jsp的企业网站系统-JavaEE实现企业网站系统 - java项目源码...
- Python MySQL更新表
- django-后台管理-表显示相关
- #JAVA# 判断从键盘输入的字符串是否为回文
- 三个变量中怎么找出中间值_scratch图形化编程基础练习-变量交换
- 计算机组成原理+左冬红,计算机组成原理与接口技术--基于MIPS架构(第2版高等学校电子信息类专业系列教材)...
- 机器学习:更多的数据总是优于更好的算法吗?
- PRCV2018美图短视频实时分类挑战赛落幕,第一名解决方案技术解读
- CMap如何使用,如何实例化?
- linux物理内存没用完swap占用大,Linux占用swap分区过高,物理内存还有剩余
- 13 个优秀的 Vue 开源项目及合集推荐
- [python] 使用Jieba工具中文分词及文本聚类概念
- 工控网关linux用什么芯片,重庆工控嵌入式主板原理,工业网关怎么挑
- win10共享打印机怎么设置_关于win10网络共享,选择“启用文件和打印机共享”之后,无法保存设置的解决办法...
- 计算机硬件故障可分为哪几类,计算机故障可分为硬件和非硬件故障
- Cortex-M3 和 M4 的区别
热门文章
- html选择器_css的9个常用选择器
- uva 11491——Erasing and Winning
- 【转载】输出二进制 C
- 402. 移掉K位数字 golang
- linux文件操作相关函数
- 修改之前的myshell使之支持输入输出重定向
- 【汇编语言】8086汇编,快速搞定各种寻址方式:立即数寻址 / 寄存器寻址 / 存储器寻址
- linux mysql 删除表脚本_linux shell脚本自动删除mysql表前3个月的数据
- C++ 网络开发工具
- [转帖]USB-C和Thunderbolt 3连接线你搞懂了吗?---没搞明白.