python常用函数
编写这个blog是为了方便日常使用时 调用,都是一些常用到的函数。
压缩
用途:
将文件+文件夹一同压缩在指定路径的文件夹下
思路:
构建ZipFile对象,定义为只写文件,采用 zipfile.ZIP_DEFLATED 压缩
使用os.walk()函数遍历源文件夹文件+文件夹
使用ZipFile对象下的write方法,将文件及文件夹写入到压缩包中文件:将文件放入压缩包中
文件夹:ZipFile对象下的write方法中第二次参数设置为相对路径即可,假若还有子文件夹,则会根据相对路径生成相应的文件夹,改代码的时候,切记不能使用绝对路径,使用绝对路径的话,压缩包就会从绝对路径下开始建文件夹。关闭ZipFile对象,结束压缩过程
代码:
import zipfile, os
def zipYaSuo(zipFileMap, zipFileName):
#压缩包名:zipFileName,状态:只写,压缩方式:zipfile.ZIP_DEFLATED
zf = zipfile.ZipFile(zipFileName, 'w', zipfile.ZIP_DEFLATED)
#遍历将要压缩的文件夹
for folderName, subFolders, fileNames in os.walk(zipFileMap):
#将文件夹里的每个文件都写到zf对象里面
for fn in fileNames:
sourceFileMap = os.path.join(folderName, fn) #sourceFileMap为源文件的路径
relpathMap = os.path.relpath(folderName, zipFileMap)
targetFileMap = relpathMap + os.sep + fn #targetFileMap为压缩包内文件的路径
zf.write(sourceFileMap , targetFileMap) #第二参数表示文件存放在压缩包的相对路径
print (f'{zipFileName} 压缩成功')
zf.close()
zipFileMap = fr'I:\wuwuwu\hello'# 要压缩的文件夹路径
zipFileName= zipFileMap +'.zip'# 压缩后文件夹的名字
zipYaSuo(zipFileMap, zipFileName)
效果演示:
邮箱发送附件
用途:
将邮件附件发送到指定邮箱
思路:
先去QQ邮箱那获取 IMAP/SMTP服务 (什么是 IMAP,它又是如何设置?)
得到使用IMAP/SMTP服务的 key
服务搭建初始化
导入邮件内容
发送邮件
代码:
import smtplib, os
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
#发送Emile
def sendEmail(fromAddr, toAddr, zipFile):
'''基础设置'''
qqKey = 'abcdefghijk' #QQ邮箱SMTP的密钥
smtpServer = 'smtp.qq.com' #SMTP的端口服务器
smtpPort = 465 #SMTP的端口号
'''文本框设置'''
textApart = MIMEText(f'这是您本次的资料', 'plain', 'utf-8')
'''附件设置'''
# 得到附件名称
zipFileName = os.path.split(zipFile)[1]
zipApart = MIMEApplication(open(zipFile, 'rb').read())
#声明附件
zipApart.add_header('Content-Disposition', 'attachment', filename=zipFileName)
#连接上文本框的内容和附件的内容
message = MIMEMultipart()
message.attach(textApart)
message.attach(zipApart)
#邮件格式设置
message['Subject'] = 'Python Smtp 邮件' #标题
message['From'] = 'Python邮件系统' #发送方昵称
try:
#连接服务器
stmp = smtplib.SMTP_SSL(smtpServer, smtpPort)
#登陆QQ的STMP服务
stmp.login(fromAddr, qqKey)
#发送邮件fromAddr为发送方, toAddr为接受方, message.as_string()为邮件内容
stmp.sendmail(fromAddr, toAddr, message.as_string())
except Exception:
print('邮件发送失败' + str(Exception))
print('邮件发送成功')
fromAddr = 'xxxxxxxxxx@qq.com' #发送方
toAddr = 'yyyyyyyyyyyy@qq.com' #接受方
zipFile = r'F:\xxx\test.zip' #附件路径
sendEmail(fromAddr=fromAddr, toAddr=toAddr, zipFile=zipFile)
效果演示:
音频提示音
用途:
完成自动化脚本后,播放提示音
代码:
# 本代码是转载百度的
# https://jingyan.baidu.com/article/e2284b2b9222dce2e6118db9.html
# 因为听起来有趣就转了
import winsound,math
for i in range(100):
winsound.Beep(int(600*math.sin(i/6.28)+700),100)