如何使用Python脚本实现文件拷贝


Posted in Python onNovember 20, 2019

这篇文章主要介绍了如何使用Python脚本实现文件拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.实现目的

统一时间对服务器某文件夹内文件进行备份保存,如若备份成功则不提示任何错误,否则将以邮件的形式告知管理员,备份出错。

2.程序流程图

主要流程图

如何使用Python脚本实现文件拷贝

拷贝流程图

如何使用Python脚本实现文件拷贝

3.代码编写

1.MyMain函数

[root@Python CheckCopyFiles]# cat MyMain.py 
#!/usr/bin/env python

import os
import sys
import MyFileZip

def main() :
  dir1 = "/root/dir1"
  dir2 = "/root/dir2"

  if os.path.isdir(dir2) == False :
    os.mkdir(dir2)
  
  if os.path.isdir(dir1) :
    MyFileZip.FileCopy(dir1,dir2)
  else :
    sys.exit(-1)  

if __name__ == "__main__" :
  main()
[root@Python CheckCopyFiles]#

2.MyFile函数

[root@Python CheckCopyFiles]# cat MyFileZip.py
#!/usr/bin/env python

import zipfile
import time
import os
import MySendMail


def FileCopy(dir1,dir2) :
  try:
    NowDate = time.strftime("%Y-%m-%d")
    Zfile = dir2+ '/'+'logfile_'+NowDate+'.zip'
    zf = zipfile.ZipFile(Zfile,'w')
  
    for filename in os.listdir(dir1) :
      if os.path.isfile(dir1 + '/' + filename) :
        zf.write(dir1 + '/' + filename)
        os.remove(dir1 + '/' + filename)
    
    zf.close()
  except:
    MySendMail.SamMail(NowDate,dir1,dir2)
[root@Python CheckCopyFiles]#

3.SendMail函数

[root@Python CheckCopyFiles]# cat MySendMail.py
#!/usr/bin/env python

import smtplib
import email.mime.text

def SamMail(NowDate,dir1,dir2) :
  HOST = "smtp.163.com"
  SUBJECT = "Copy File Warning"
  TO = "发送的帐号"
  FROM = "来自于账户"
  Remask = "Copy dirctory warning"

  msg = email.mime.text.MIMEText("""
  <html>
    <body>
      <h1>Warning</h1>
      <h2>Time:%s</h2> 
      <h2>Dirctory:%s</h2> 
      <h2>Remask:%s</h2> 
    </body>
  </html>
  """ % (NowDate,dir1,"Copy File Error"),"html","utf-8")

  msg['Subject'] = SUBJECT
  msg['From'] = FROM
  msg['TO'] = TO

  try:
    server = smtplib.SMTP()
    server.connect(HOST,'25')
    server.starttls()
    server.login("帐号","密码")
    server.sendmail(FROM,TO,msg.as_string())
    server.quit()
  except:
    print ("Send mail Error")
[root@Python CheckCopyFiles]#

4.实现效果

4.1 建立新的文件

[root@Python ~]# touch /root/dir1/7 /root/dir1/8
 [root@Python ~]#

4.2 执行代码

[root@Python ~]# python /root/python/CheckCopyFiles/MyMain.py 
 [root@Python ~]#

4.3 查看文件

[root@Python ~]# ls -l /root/dir1 -a
 total 0
 drwxrwxrwx. 2 root root  6 Aug 27 09:26 .
 dr-xr-x---. 6 root root 201 Aug 27 09:26 ..
 [root@Python ~]#
[root@Python ~]# ls -l /root/dir2/
total 4
-rw-r--r--. 1 root root 218 Aug 27 09:28 logfile_2017-08-27.zip
[root@Python ~]# unzip -v /root/dir2/logfile_2017-08-27.zip 
Archive: /root/dir2/logfile_2017-08-27.zip
 Length  Method  Size Cmpr  Date  Time  CRC-32  Name
-------- ------ ------- ---- ---------- ----- -------- ----
    0 Stored    0  0% 08-27-2017 09:27 00000000 root/dir1/7
    0 Stored    0  0% 08-27-2017 09:27 00000000 root/dir1/8
--------     ------- ---              -------
    0        0  0%              2 files
[root@Python ~]#

由此可见,dir1中的文件已经备份至/root/dir2/logfile_2017-08-27.zip中,且已经删除了原文件

4.3 查看发送邮件效果

修改一下源码:

[root@Python CheckCopyFiles]# cat MyFileZip.py
#!/usr/bin/env python

import zipfile
import time
import os
import MySendMail


def FileCopy(dir1,dir2) :
  try:
    NowDate = time.strftime("%Y-%m-%d")
    Zfile = dir2+ '/'+'logfile_'+NowDate+'.zip'
    zf = zipfile.ZipFile(Zfile,'w')
  
    for filename in os.listdir(dir1) :
      if os.path.isfile(dir1 + '/' + filename) :
        zf.write(dir1 + '/' + filename)
        os.remove(dir1 + '/' + filename)
    
    zf.close()
    sys.exit()
  except:
    MySendMail.SamMail(NowDate,dir1,dir2)
[root@Python CheckCopyFiles]#

22行 sys 模块并未导入,故一定会出错

执行效果如下:

[root@Python ~]# python /root/python/CheckCopyFiles/MyMain.py 
 [root@Python ~]#

收到邮件的效果如下:

如何使用Python脚本实现文件拷贝

只要把脚本写入crontab,那样就可以按时执行了,例如:

[root@Python CheckCopyFiles]# crontab -l
 00 14 * * 0 /usr/bin/python /root/python/CheckCopyFiles/MyMain.py
 [root@Python CheckCopyFiles]#

意思是每周日14点调用/usr/bin/python 去执行/root/python/CheckCopyFiles/MyMain.py文件

至此,由python写的备份脚本已经全部完成

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python+selenium识别验证码并登录的示例代码
Dec 21 Python
Python读取word文本操作详解
Jan 22 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
python 调用钉钉机器人的方法
Feb 20 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
Python中拆分字符串的操作方法
Jul 23 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
Python基于numpy模块实现回归预测
May 14 Python
详解python3类型注释annotations实用案例
Jan 20 Python
Python笔记之代理模式
Nov 20 #Python
Python Tkinter模块 GUI 可视化实例
Nov 20 #Python
Python笔记之观察者模式
Nov 20 #Python
django 实现celery动态设置周期任务执行时间
Nov 19 #Python
python调用接口的4种方式代码实例
Nov 19 #Python
Python Django2.0集成Celery4.1教程
Nov 19 #Python
通过celery异步处理一个查询任务的完整代码
Nov 19 #Python
You might like
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
php header示例代码(推荐)
2010/09/08 PHP
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
2013/04/23 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
2020/01/16 Javascript
python多重继承实例
2014/10/11 Python
Python中的ctime()方法使用教程
2015/05/22 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
如何通过Python实现标签云算法
2019/07/02 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
django框架auth模块用法实例详解
2019/12/10 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
2014年元旦感言
2014/03/06 职场文书
服务标语口号
2014/07/01 职场文书