如何使用Python脚本实现文件拷贝
这篇文章主要介绍了如何使用Python脚本实现文件拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.实现目的
统一时间对服务器某文件夹内文件进行备份保存,如若备份成功则不提示任何错误,否则将以邮件的形式告知管理员,备份出错。
2.程序流程图
主要流程图
拷贝流程图
3.代码编写
1.MyMain函数
[root@PythonCheckCopyFiles]#catMyMain.py #!/usr/bin/envpython importos importsys importMyFileZip defmain(): dir1="/root/dir1" dir2="/root/dir2" ifos.path.isdir(dir2)==False: os.mkdir(dir2) ifos.path.isdir(dir1): MyFileZip.FileCopy(dir1,dir2) else: sys.exit(-1) if__name__=="__main__": main() [root@PythonCheckCopyFiles]#
2.MyFile函数
[root@PythonCheckCopyFiles]#catMyFileZip.py #!/usr/bin/envpython importzipfile importtime importos importMySendMail defFileCopy(dir1,dir2): try: NowDate=time.strftime("%Y-%m-%d") Zfile=dir2+'/'+'logfile_'+NowDate+'.zip' zf=zipfile.ZipFile(Zfile,'w') forfilenameinos.listdir(dir1): ifos.path.isfile(dir1+'/'+filename): zf.write(dir1+'/'+filename) os.remove(dir1+'/'+filename) zf.close() except: MySendMail.SamMail(NowDate,dir1,dir2) [root@PythonCheckCopyFiles]#
3.SendMail函数
[root@PythonCheckCopyFiles]#catMySendMail.py #!/usr/bin/envpython importsmtplib importemail.mime.text defSamMail(NowDate,dir1,dir2): HOST="smtp.163.com" SUBJECT="CopyFileWarning" TO="发送的帐号" FROM="来自于账户" Remask="Copydirctorywarning" msg=email.mime.text.MIMEText("""Warning
Time:%s
Dirctory:%s
Remask:%s
"""%(NowDate,dir1,"CopyFileError"),"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("SendmailError") [root@PythonCheckCopyFiles]#
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 total0 drwxrwxrwx.2rootroot6Aug2709:26. dr-xr-x---.6rootroot201Aug2709:26.. [root@Python~]#
[root@Python~]#ls-l/root/dir2/ total4 -rw-r--r--.1rootroot218Aug2709:28logfile_2017-08-27.zip [root@Python~]#unzip-v/root/dir2/logfile_2017-08-27.zip Archive:/root/dir2/logfile_2017-08-27.zip LengthMethodSizeCmprDateTimeCRC-32Name ---------------------------------------------------- 0Stored00%08-27-201709:2700000000root/dir1/7 0Stored00%08-27-201709:2700000000root/dir1/8 ------------------------- 000%2files [root@Python~]#
由此可见,dir1中的文件已经备份至/root/dir2/logfile_2017-08-27.zip中,且已经删除了原文件
4.3查看发送邮件效果
修改一下源码:
[root@PythonCheckCopyFiles]#catMyFileZip.py #!/usr/bin/envpython importzipfile importtime importos importMySendMail defFileCopy(dir1,dir2): try: NowDate=time.strftime("%Y-%m-%d") Zfile=dir2+'/'+'logfile_'+NowDate+'.zip' zf=zipfile.ZipFile(Zfile,'w') forfilenameinos.listdir(dir1): ifos.path.isfile(dir1+'/'+filename): zf.write(dir1+'/'+filename) os.remove(dir1+'/'+filename) zf.close() sys.exit() except: MySendMail.SamMail(NowDate,dir1,dir2) [root@PythonCheckCopyFiles]#
22行sys模块并未导入,故一定会出错
执行效果如下:
[root@Python~]#python/root/python/CheckCopyFiles/MyMain.py [root@Python~]#
收到邮件的效果如下:
只要把脚本写入crontab,那样就可以按时执行了,例如:
[root@PythonCheckCopyFiles]#crontab-l 0014**0/usr/bin/python/root/python/CheckCopyFiles/MyMain.py [root@PythonCheckCopyFiles]#
意思是每周日14点调用/usr/bin/python去执行/root/python/CheckCopyFiles/MyMain.py文件
至此,由python写的备份脚本已经全部完成
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。