'''由于是学习笔记,所以记录不会像课程那样完备,只会记录自己在某些知识点的想法。闲话不多说,进入笔记正文。

看完了并实操完了第一章所有内容之后,发现可以概括为以下几点;
1.文件路径:区分相对路径和绝对路径,查看和修改当前路径;
2.文件和文件夹的增,改,删,复制,移动和压缩(是不是有SQL那味儿了)
3.自动发送电子邮件(我相当喜欢这部分内容)'''

'''第一章 文件自动化处理&邮件批量处理'''

'''
1.文件路径:区分相对路径和绝对路径,查看和修改当前路径;
相对路径和绝对路径是我在学习本章内容之前没有注意到的,因为在我的实际工作中大多数使用的是绝对路径,几乎没有使用相对路径。

path='***'
os.listdir(os.path.dirname(path))
遍历path1路径下所有的文件名,并用字符串列表的形式返回。

查看当前路径:
import os
os.getcwd()

改变当前路径:
import os
os.chdir()
注释:为了便于记忆,我把chdir理解为change direction的缩写。但是没想到getcwd的全拼,get current windows direction?
'''

'''
2.文件和文件夹的查(读),增,改,删,复制,移动和压缩
查(读):read(),readlines()
path1='****'
file1=open(path1)
content1=file1.read() #注意这里需要把读取的内容赋值给新变量
print(content1)

path1='****'
file1=open(path1)
content1=file1.readlines() #注意这里需要把读取的内容赋值给新变量.read()和Readlines()的区别在于输出内容的形式,read是按照原文输出不做改变,readlines()是把原文变成字符串列表输出,且换行用\n代替。
print(content1)

增:'a'增加模式,在文件原有内容的基础上增加新写入的内容。
path2=''
file2=open(path2,'a')
file2.write('*
')
file2.close() 需要注意的是,每次增改删查结束后,需要记得写上close语句,如此改变才能生效。

改:'w'写模式,删除文件原有内容保存新写入的内容
path2=''
file2=open(path2,'w')
file2.write('*
')
file2.close()

删:
无悔模式,永久删除。
import os
os.unlink(path3):永久删除指定文件
import os
os.rmdir(path4):永久删除指定文件夹,该文件夹必须为空
import shutil
shutil.rmdir(path5):永久删除指定文件夹及内容

可反悔模式,临时删除。
import send2trash
send2trash.send2trash(path5) #临时删除指定文件夹或者指定文件
#send2trash名字相当好记,字面意思send to trash,发送到垃圾箱。

复制:
import shutil
shutil.copy(source,destination) #将指定文件从source复制到destination

import shutil
shutil.copytree(source,destination) #将指定文件夹从source复制到destination,这意味着文件夹所有文件也会被复制过去。

移动:
import shutil
shutil.move(source.destination) #将指定文件or文件夹从source移动到destination,值得注意的是,source和destination不能是包含与被包含的关系
'''

3.自动发送电子邮件
'''
这部分其实没有多少可以自己发挥的地方,所以直接粘贴了教程的内容,但是我增加了定时发送功能,通过调用time和schedule库,定义函数实现。使用的时候,只需要根据自己的实际情况进行修改即可。
import smtplib #导入库
from smtplib import SMTP_SSL #加密邮件内容,防止中途被截获
import schedule
import time #定时发送,以及日期
from email.mime.text import MIMEText #构造邮件的正文
from email.mime.image import MIMEImage #构造邮件的图片
from email.mime.multipart import MIMEMultipart #把邮件的各个部分装在一起,邮件的主体
from email.header import Header #邮件的文件头,标题,收件人
def autosend():
#2 设置邮箱域名、发件人邮箱、邮箱授权码、收件人邮箱
host_server = 'smtp.163.com' #sina 邮箱smtp服务器 #smtp 服务器的地址
sender_163 = '**@163.com' #sender_163为发件人的邮箱
pwd = '*****' #pwd为邮箱的授权码'*****'
#也可以自己注册个邮箱,邮箱授权码获取方式可参考#http://help.163.com/14/0923/22/A6S1FMJD00754KNP.html
receiver = 'xxxxx@qq.cpm'
#3 构建MIMEMultipart对象代表邮件本身,可以往里面添加文本、图片、附件等
msg = MIMEMultipart() #邮件主体
#4 设置邮件头部内容
mail_title = 'python办公自动化邮件' # 邮件标题
msg["Subject"] = Header(mail_title,'utf-8') #装入主体
msg["From"] = sender_163 #寄件人
msg["To"] = Header("么么哒猪猪",'utf-8') #标题
#5 添加正文文本
mail_content = "您好!\n我是,么么哒哟,猪猪\nBR\n**" #邮件的正文内容
message_text = MIMEText(mail_content,'plain','utf-8') #构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
msg.attach(message_text) # 向MIMEMultipart对象中添加文本对象
#6 添加图片
#image_data = open('E:\datawhale\OfficeAutomation\图片\周杰伦.jpg','rb') # 二进制读取图片
#message_image = MIMEImage(image_data.read()) # 设置读取获取的二进制数据
#image_data.close() # 关闭刚才打开的文件
#msg.attach(message_image) # 添加图片文件到邮件信息当中去
# 7 添加附件(excel表格)
#atta = MIMEText(open('E:\datawhale\OfficeAutomation\图片\excel到word.xlsx', 'rb').read(), 'base64', 'utf-8') # 构造附件
#atta["Content-Disposition"] = 'attachment; filename="excel到word.xlsx"' # 设置附件信息
#msg.attach(atta) ## 添加附件到邮件信息当中去
#8 发送邮件
smtp = SMTP_SSL(host_server) #SSL登录 创建SMTP对象
smtp.login(sender_163,pwd) ## 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码
smtp.sendmail(sender_163,receiver,msg.as_string()) # 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为str
print("邮件发送成功")
smtp.quit # 关闭SMTP对象

schedule.every(1).minutes.do(autosend) #每1分钟发送一次邮件。

while True:
schedule.run_pending()
time.sleep(5)
'''