【python办公自动化 | Datawhale】Task01 文件自动化与邮件处理

【python办公自动化 | Datawhale】Task01 文件自动化与邮件处理,第1张

【python办公自动化 | Datawhale】Task01 文件自动化与邮件处理

代码如下

"""文件处理"""
import os
os.path.join('datawhale','docu')#创建文件名称
os.chdir(r'C:UsershuangyanDesktopOfficeAutomation')#改变当前工作目录
os.getcwd()#获取当前工作目录
###“绝对路径”,总是从根文件夹开始。
###“相对路径”,相对于程序的当前工作目录。
###相对路径中,单个句点“.”表示当前目录的缩写,两个句点“..”表示父文件夹。
os.path.abspath('.')#当前路径转化为绝对路径
os.path.isabs('.')#判断是否是绝对路径,返回false
os.path.isabs(os.path.abspath('.'))#返回true
os.path.dirname(os.getcwd())#返回路径的目录名称
os.path.basename(os.getcwd())#返回路径的文件夹名称
os.path.relpath(os.getcwd(),'C:\Users\')#:返回从C:\Users\到path的相对路径的字符串
os.path.relpath(os.getcwd(),'..')
os.path.split(os.getcwd())#同时得到路径的目录名称和文件夹名称
os.getcwd().split('\')
os.getcwd().split(os.path.sep)#返回每个文件夹的字符串的列表,os.path.sep为文件分隔符
path = 'D:\Datawhale\python办公自动化\python课程画图.pptx'
os.path.exists(path)#判断该路径是否存在
os.path.exists(r'c:users')
os.path.isdir(r'c:users')#路径存在且是文件夹则返回true
os.path.isdir(r'C:UsershuangyanDesktopOfficeAutomationtest.xlsx')
os.path.isfile(r'c:users')#路径存在且是文件则返回true
os.path.isfile(r'C:UsershuangyanDesktopOfficeAutomationtest.xlsx')
os.makedirs(r'C:UsershuangyanDesktopOfficeAutomationtest')#创建文件夹,若已存在则会报错
###创建文件夹###
path=r'C:UsershuangyanDesktopOfficeAutomationhaha'
if os.path.exists(path):
    print('Exists!')
else:
    os.makedirs(path)
    print('Succed!')
os.path.getsize(os.getcwd())#返回path参数中文件的字节数
os.listdir(os.getcwd())#返回该文件夹中的文件名列表
###计算该文件夹大小,即计算该文件夹中所有文件大小之和###
total_size=0
for filename in os.listdir(os.getcwd()):
    total_size=total_size+os.path.getsize(os.path.join(os.getcwd(),filename))
print(total_size)
path=r'C:UsershuangyanDesktopOfficeAutomationhahahello.txt'
hellofile=open(path)#打开文件夹
print(hellofile)
hellofile.read()#读取文件,只能读一次
hellofile.readlines()#按行读取,取得一个字符串列表,列表中每个字符串是文本中的一行且以n结束。
hellofile.close()
hellofile=open(path,'a')#添加模式
hellofile.write('n再见!!')
hellofile.close()
hellofile=open(path,'w')#写入模式,会覆盖原有的内容
hellofile.write('n再见!!')
hellofile.close()
hellofile=open(path)
hellofile.readlines()
hellofile.close()
#保存变量
import shelve
shelffile=shelve.open('mydata')
cats=['huahua','mimi','guaiguai']
shelffile['cats']=cats
shelffile.close()
#重新打开
shelffile=shelve.open('mydata')#shelf 值不必用读模式或写模式打开,因为打开后,既能读又能写
type(shelffile)
shelffile['cats']
list(shelffile.keys())#就像字典一样, shelf 值有 keys() 和 values() 方法,返回shelf中键和值的类似列表的值。但是这些方法返回类似列表的值,却不是真正的列表,所以应该将它们传递给 list() 函数,取得列表的形式f
list(shelffile.values())
shelffile.close()
#用 pprint.pformat() 函数保存变量
import pprint
cats = [{'name':'Zophie','desc':'chubby'},{'name':'Pooka','desc':'fluffy'}]
pprint.pformat(cats)#可以写入字典
fileObj = open('myCats.py','w')#可以写入.py文件
fileObj.write('cats = '+pprint.pformat(cats)+'n')
fileObj.close()
import myCats
myCats.cats
myCats.cats[0]
myCats.cats[0]['desc']


import shutil #shutil (或称为shell工具)模块中包含一些函数,可以在Python程序中复制、移动、改名和删除文件。
shutil.copy(r'C:UsershuangyanDesktopOfficeAutomationmyCats.py',
            r'C:UsershuangyanDesktopOfficeAutomationhaha')#将文件mycats复制到haha文件夹中,返回新复制文件绝对路径字符串
shutil.copy(r'C:UsershuangyanDesktopOfficeAutomationmyCats.py',
            r'C:UsershuangyanDesktopOfficeAutomationhahahaha.py')#将文件mycats复制到haha文件夹中,并重命名为haha.py
shutil.copy(r'C:UsershuangyanDesktopOfficeAutomationmyCats.py',
            r'C:UsershuangyanDesktopOfficeAutomationhahahaha')#haha文件不存在,则自动生成该文件,是一个没有扩展名的文件,慎用
shutil.copytree(r'C:UsershuangyanDesktopOfficeAutomationhaha',r'C:UsershuangyanDesktopOfficeAutomationxixi')#将文件夹完成复制一份命名为xixi,xixi必须不存在
shutil.move(r'C:UsershuangyanDesktopOfficeAutomationpdf版本',r'C:UsershuangyanDesktopOfficeAutomationxixi')
shutil.move(r'C:UsershuangyanDesktopOfficeAutomationxixipdf版本',r'C:UsershuangyanDesktopOfficeAutomation')#将pdf版本文件夹剪切到OfficeAutomation下
shutil.move(r'C:UsershuangyanDesktopOfficeAutomationpdf版本',r'C:UsershuangyanDesktopOfficeAutomationwawa')#若wawa不存在,则是移动加重命名
shutil.move(r'C:UsershuangyanDesktopOfficeAutomationwawa',r'C:UsershuangyanDesktopOfficeAutomationpdf版本')
shutil.move(r'C:UsershuangyanDesktopOfficeAutomationxixihello.txt',r'C:UsershuangyanDesktopOfficeAutomationhi.txt')
#hello.txt移动到OfficeAutomation下并重命名为hi.txt,如果destination中有原来已经存在同名文件,移动后,会被覆写,所以应当特别注意。
os.chdir(r'C:UsershuangyanDesktopOfficeAutomationxixi')
os.getcwd()
os.listdir()
for file in os.listdir():
    if file.endswith('.py'):#后缀名
        #os.unlink(file)#删除该文件夹中的py文件
        print(file)
os.listdir()
"""
永久性删除
os.unlink(path) : 删除path处的文件。
os.rmdir(path) : 删除path处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹。
shutil.rmtree(path) :删除 path 处的文件夹,它包含的所有文件和文件夹都会被删除。
"""
import send2trash#安全删除,删除文件在回收站
send2trash.send2trash(r'C:UsershuangyanDesktopOfficeAutomationxixihaha')
"""
os.walk()遍历
os.walk() 在循环的每次迭代中,返回三个值:
 1)、当前文件夹名称的字符串。
 2)、当前文件夹中子文件夹的字符串的列表。
 3)、当前文件夹中文件的字符串的列表。
"""
for folder,subfolders,filenames in os.walk(r'C:UsershuangyanDesktopOfficeAutomationhaha'):
    print('The current folder is '+os.path.basename(folder))
    for subfolder in subfolders:
        print('Subfolder of '+os.path.basename(folder)+' : '+subfolder)
    for filename in filenames:
        print('File inside '+os.path.basename(folder)+' : '+filename)
    print('')

#压缩
后补


"""自动发邮件"""
#1 先导入相关的库和方法
import smtplib #导入库
from smtplib import SMTP_SSL #加密邮件内容,防止中途被截获
from email.mime.text import MIMEText #构造邮件的正文
from email.mime.image import MIMEImage #构造邮件的图片
from email.mime.multipart import MIMEMultipart #把邮件的各个部分装在一起,邮件的主体
from email.header import Header #邮件的文件头,标题,收件人
#2 设置邮箱域名、发件人邮箱、邮箱授权码、收件人邮箱
host_server = 'smtp.163.com' #sina 邮箱smtp服务器 #smtp 服务器的地址
sender_163 = 'xxx@163.com' #sender_163为发件人的邮箱
pwd = 'xxxx' #pwd为邮箱的授权码'DYEPOGLZDZYLOMRI'
receiver = 'xxxx@qq.com'
#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 = "您好,这是使用python登录163邮箱发送邮件的测试" #邮件的正文内容
message_text = MIMEText(mail_content,'plain','utf-8') #构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式
msg.attach(message_text) # 向MIMEMultipart对象中添加文本对象
#6 添加图片
image_data = open(r'C:UsershuangyanDesktopOfficeAutomation图片周杰伦.jpg','rb') # 二进制读取图片
message_image = MIMEImage(image_data.read()) # 设置读取获取的二进制数据
image_data.close() # 关闭刚才打开的文件
msg.attach(message_image) # 添加图片文件到邮件信息当中去
# 7 添加附件
atta = MIMEText(open(r'C:UsershuangyanDesktopOfficeAutomationhi.txt', 'rb').read(), 'base64', 'utf-8') # 构造附件
atta["Content-Disposition"] = 'attachment; filename="hi.txt"' # 设置附件信息
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对象

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5521574.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存