前言:因为每次更新好日报程序都要把最新版本发给同事,所以萌生了做个程序自动合并文件——压缩文件——发送邮件——删除文件,其中压缩文件用了网上比较好用的轮子,删除文件夹和文件夹下的所有内容用了shutil.rmtree

import zipfile
import os
import shutil
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase #附件
from email.mime.text import MIMEText
from email import encoders #转码
from datetime import datedef getToday():'''获得今天的日期,并把名字改成0901这样的格式'''today = date.today()date_today = today.strftime("%m%d")return date_todaydef combine_file():'''首先判断是否有周末日报,如果有的话就删除;然后把日报和数据这两个文件夹复制到周末日报中'''if os.path.exists(r'C:\Users\Administrator\Desktop\报表\周末日报'):shutil.rmtree(r'C:\Users\Administrator\Desktop\报表\周末日报')os.mkdir(r'C:\Users\Administrator\Desktop\报表\周末日报')shutil.copytree(r'C:\Users\Administrator\Desktop\报表\日报',r'C:\Users\Administrator\Desktop\报表\周末日报\日报')shutil.copytree(r'C:\Users\Administrator\Desktop\报表\数据',r'C:\Users\Administrator\Desktop\报表\周末日报\数据')def zipDir(dirpath, outFullName):'''压缩指定文件夹:param dirpath: 目标文件夹路径:param outFullName:  压缩文件保存路径+XXXX.zip:return: 无'''zip = zipfile.ZipFile(outFullName, 'w', zipfile.ZIP_DEFLATED)for path, dirnames, filenames in os.walk(dirpath):#去掉目标和路径,只对目标文件夹下边的文件及文件夹进行压缩(包括父文件夹本身)this_path = os.path.abspath('.')fpath = path.replace(this_path, '')for filename in filenames:zip.write(os.path.join(path, filename), os.path.join(fpath, filename))zip.close()def server_pre(msg):'''邮件服务器基础设置'''server = smtplib.SMTP('mail.sh.ctc.com')server.starttls()fromAddr = '**@shtel.com.cn'  # 发件人myPass = '******'  # 发件人密码server.login(fromAddr, myPass)server.send_message(msg)server.quit()def send_listing():'''发送邮件'''global msg_listmsg_list = MIMEMultipart()msg_list['From'] = '**@shtel.com.cn'msg_list['To'] = '**@shtel.com.cn, **@shtel.com.cn'# msg_list['To'] = '**@189.cn, **@qq.com'msg_list['Subject'] = '周末日报' + getToday()body = '周末日报'+ getToday()msg_list.attach(MIMEText(body))with open(r"C:\Users\Administrator\Desktop\报表\周末日报.zip",'rb') as f:#这里附件的MIME和文件名,这里是xls类型mime = MIMEBase('zip','zip',filename='周末日报.zip')#加上必要的头信息mime.add_header('Content-Disposition','attachment',filename=('gb2312', '', '周末日报.zip'))mime.add_header('Content-ID','<0>')mime.add_header('X-Attachment-Id','0')#把附件的内容读进来mime.set_payload(f.read())#用Base64编码encoders.encode_base64(mime)msg_list.attach(mime)server_pre(msg_list)print(">>>发送邮件成功!")if __name__ =='__main__':combine_file()print('>>>合并报表成功!')dirpath = r'C:\Users\Administrator\Desktop\报表\周末日报'outFullName = r'C:\Users\Administrator\Desktop\报表\周末日报.zip'zipDir(dirpath, outFullName)print('>>>压缩文件成功!')send_listing()os.remove(outFullName)shutil.rmtree(r'C:\Users\Administrator\Desktop\报表\周末日报')print('>>>删除文件成功!')

通过Python自动压缩文件并发送邮件相关推荐

  1. Python的压缩文件处理 zipfile tarfile

    本文从以下两个方面, 阐述Python的压缩文件处理方式: 一. zipfile 二. tarfile 一. zipfile 虽然叫zipfile,但是除了zip之外,rar,war,jar这些压缩( ...

  2. python 自动下载文件_【Py大法系列--03】Python如何自动下载文件

    问题描述 Python自动下载文件,通用文件,包括但不限于压缩文件.图片等. 解决方法 一般情况下,Python下载文件的方式有以下几种: 利用urllib.urllib2,即Python爬虫用的最多 ...

  3. python读写压缩文件使用gzip和bz2

    python读写压缩文件使用gzip和bz2 #读取压缩文件 # gzip compression import gzip with gzip.open('somefile.gz', 'rt') as ...

  4. python读压缩文件内容_Python读写压缩文件的方法

    问题 你想读写一个gzip或bz2格式的压缩文件. 解决方案 gzip 和bz2模块可以很容易的处理这些文件. 两个模块都为 open()函数提供了另外的实现来解决这个问题. 比如,为了以文本形式读取 ...

  5. python gzip压缩文件

    python gzip压缩文件 下面的代码实现用gzip格式压缩文件,需要引用gzip包. #! import string import gzip from optparse import Opti ...

  6. java 压缩加密_Java实现自动压缩文件并加密的方法示例

    本文实例讲述了Java实现自动压缩文件并加密的方法.分享给大家供大家参考,具体如下: 实现功能:自动压缩并加密 /** * * @Title: zipFilesAndEncrypt * @Descri ...

  7. 程序调用winrar自动压缩文件

    程序调用winrar自动压缩文件,有时在备份文件等,完成后需要用本机的winrar对文件自动压缩并拷贝走. 这里提供一个例程: try{String winRarPath = null;if (!Ex ...

  8. python读取压缩文件时乱码,zipfile解压缩包,出现中文乱码问题问题

    python读取压缩文件时乱码,zipfile解压缩包,出现中文乱码问题问题 问题描述--python 使用zipfile模块 读取并且解压缩包,出现中文乱码问题 问题原因 python 使用这个模块 ...

  9. python读压缩文件内容_使用Python读写及压缩和解压缩文件的示例

    读写文件 首先看一个例子: f = open('thefile.txt','w') #以写方式打开, try: f.write('wokao') finally: f.close() 文件的打开方式: ...

最新文章

  1. Jetty 基本使用样例
  2. 删除svn同步文件目录
  3. ES6入门之对象扩展
  4. tensorflow学习(3.tensorboard的使用)
  5. ES10的动态导入文件
  6. swiper踩过的哪些坑
  7. mate 树莓派4b安装ubuntu_树莓派4B安装安装Ubuntu Mate 16.04
  8. java 局部内部类常用么_Java中的内部类
  9. 代理ip如何使用_为什么在使用代理IP爬虫时会出现超时?
  10. 三次样条插值算法C++实现
  11. Qt:During startup program exited with code 0xc0000135
  12. corosync +drbd实现HA MariaDB
  13. 每天定时自动备份docker的mysql
  14. 软中断上下文能够睡眠吗?
  15. 微信小程序生成二维码方法接口集合
  16. undo歌词中文音译_T-ara - Lovey Dovey 罗马拼音+中文歌词+韩文歌词+中文音译
  17. php制作水印图片,PHP实例制作水印图片
  18. QT入门之布局 水平布局、垂直布局、表单布局、网格布局
  19. okvis 基于关键帧视觉惯性传感器非线性优化SLAM 论文翻译+博客总结
  20. PS教程丨如何使用PS消除全景图中的三脚架?

热门文章

  1. append和extend的区别
  2. 在校大学生学业预警系统java_关于学业预警系统上线使用的通知
  3. 常见的四种回归测试分析
  4. 找2021考研资料?这些超强资源网站必须知道!
  5. 【Windows】快捷添加鼠标右键的菜单项
  6. Smarty - 官方网站
  7. 劫持流量原理是什么?关于劫持流量的种类和产生
  8. 转载 Package CJK Error: Invalid character code错误
  9. 《python编程:从入门到实践》文件和异常——百万圆周率,pi_million_digits.txt
  10. java 月份缩写_关于java:如何将日期字符串解析为Date?