欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

程序员文章站 2022-03-26 10:19:21
文章目录一.数据分析(pandas)1.导入数据2.数据透视表3.matplotlib4.数据可视化二.发送邮件1.发送普通邮件2.发送带网址的邮件三.Python玩微信1.可视化统计好友地理位置2.获取全部微信好友头像3.开发聊天机器人四.Python玩钉钉1.自动群发钉钉消息2.发链接和Markdown五.文件管理1.搜索文件2.一键打开办公软件一.数据分析(pandas)1.导入数据安装:pip install pandas(1)一维数据import pandas as pd# 一维数据...

一.数据分析(pandas)

1.导入数据

安装:pip install pandas
(1)一维数据

import pandas as pd

# 一维数据
one_d = pd.Series(['a', 'b', 'c', 'd'])
print(one_d)

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理
(2)二维数据

import pandas as pd
two_d = pd.DataFrame({
    '学号': ['A2', 'A3'],
    '姓名': ['源一', '源二'],
    '语文': ['96', '77'],
})
print(two_d)

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

2.数据透视表

安装:pip install numpy

import pandas as pd
import numpy as np

r_file = pd.ExcelFile('test.xlsx')
data = r_file.parse('Sheet1')
# index代表行的名称,columns代表列的名称
# aggfunc=np.sum 求和
# margins =True 总计
# 求各省的分数和
pt_s = pd.pivot_table(data, index=['省份'], aggfunc=np.sum, margins=True)  # aggfunc=np.sum 求和,默认是平均值
print(pt_s)
# 全部显示行和列
# pt_s.set_option('display.max_rows', None)
# pt_s.set_option('display.max_columns', None)
# 求各省的个数
pt_n = pd.pivot_table(data, index=['省份'], aggfunc=np.size, margins=True)
print(pt_n)

print('++++++++++')
# 从数据透视表中取数字
print(pt_s.iat[0, 0])
print(pt_n.iat[0, 0])

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

3.matplotlib

安装:pip install matplotlib
(1)折线图

import matplotlib.pyplot as mplt

# 支持中文
mplt.rcParams['font.sans-serif'] = ['SimHei']
date = ['2020/12/3', '2020/12/4', '2020/12/5']
BJ = [10, 30, 20]
SH = [40, 60, 50]

# 折线图
mplt.plot(date, BJ, color='red', label='北京')
mplt.plot(date, SH, color='blue', label='上海')
mplt.title('降雨量')
mplt.xlabel('日期')
mplt.ylabel('降雨量')
mplt.legend()
mplt.show()

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理
(2)柱状图

# 柱状图
mplt.bar(date, BJ, color='red', label='北京')
mplt.legend()
mplt.show()

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

# 水平柱状图
mplt.barh(date, BJ, color='red', label='北京')
mplt.legend()
mplt.show()

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理
(3)饼图

# 饼图
data = [1, 2]
province = ['北京', '上海']
colors = ['red', 'blue']
mplt.pie(x=data, labels=province, colors=colors)
mplt.legend()
mplt.show()

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

4.数据可视化

import pandas as pd
import numpy as np
import matplotlib.pyplot as mplt

r_file = pd.ExcelFile('test.xlsx')
data = r_file.parse('Sheet1')
# 各省的个数
pt_n = pd.pivot_table(data, index=['省份'], aggfunc=np.size)

mplt.rcParams['font.sans-serif'] = ['SimHei']
pt_n.plot(kind='bar')

# 修改
# index的倾斜角度
mplt.xticks(rotation=45)
mplt.title('各省数量')
mplt.xlabel('省份')
mplt.ylabel('个数')
mplt.legend()

mplt.show()

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

二.发送邮件

1.发送普通邮件

import smtplib
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

host_server = 'smtp.qq.com'  # QQ邮箱smtp服务器
sender = 'xxxxxx@qq.com'  # 发件人邮箱
pwd = 'xxxxxxx'  # QQ邮箱授权码

receiver = 'xxxxxxxxxx@qq.com'  # 收件人邮箱

mail_title = 'Python办公自动化的邮件'  # 邮件标题
mail_content = '你好,这是测试邮件'  # 邮件正文

msg = MIMEMultipart()  # 初始化邮件主体
msg['Subject'] = Header(mail_title, 'utf-8')
msg['From'] = sender
msg['To'] = Header('测试邮箱', 'utf-8')
msg.attach(MIMEText(mail_content, 'plain', 'utf-8'))  # 邮件正文内容,plain:无格式

smtp = SMTP_SSL(host_server)  # ssl登录
smtp.login(sender, pwd)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

2.发送带网址的邮件

import smtplib
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

host_server = 'smtp.qq.com'  # QQ邮箱smtp服务器
sender = 'xxxxxx@qq.com'  # 发件人邮箱
pwd = 'xxxxxxx'  # QQ邮箱授权码

receiver = 'xxxxxxxxxx@qq.com'  # 收件人邮箱

mail_title = 'Python办公自动化的邮件'  # 邮件标题
mail_content = '你好,这是测试邮件,请点击链接:https://blog.csdn.net/yuanfate'  # 邮件正文

msg = MIMEMultipart()  # 初始化邮件主体
msg['Subject'] = Header(mail_title, 'utf-8')
msg['From'] = sender
msg['To'] = Header('测试邮箱', 'utf-8')
msg.attach(MIMEText(mail_content, 'html', 'utf-8'))  # 邮件正文内容
try:
    smtp = SMTP_SSL(host_server)  # ssl登录
    smtp.set_debuglevel(0)  # 调试,0:关闭,1:打开
    smtp.ehlo(host_server)
    smtp.login(sender, pwd)
    smtp.sendmail(sender, receiver, msg.as_string())
    smtp.quit()
    print('邮件发送成功')
except smtplib.SMTPException:
    print('无法发送邮件')

Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

三.Python玩微信

1.可视化统计好友地理位置

安装:pip install wxpy

from wxpy import *

'''
微信机器人登录有3种模式,
(1)极简模式:robot = Bot()
(2)终端模式:robot = Bot(console_qr=True)
(3)缓存模式(可保持登录状态):robot = Bot(cache_path=True)
'''

# 初始化一个机器人对象
# cache_path缓存路径,给定值为第一次登录生成的缓存文件路径
bot = Bot()
# 获取好友列表(包括自己)
my_friends = bot.friends(update=False)
'''
stats_text函数:帮助我们简单统计微信好友基本信息
简单的统计结果的文本
:param total:总体数量
:param sex:性别分布
:param top_provinces:省份分布
:param top_cities:城市分布
:return:统计结果文本
'''
print(my_friends.stats_text())

说明:如果扫码登录后提示:KeyError: ‘pass_ticket’,则说明微信禁止该账号登陆微信网页版,需要找到能让账号登陆微信网页版的方法就可以了。

2.获取全部微信好友头像

from wxpy import *
import os

# 初始化机器人,扫码登录微信,适用于windows系统
bot = Bot()
#  Linux系统,执行登录请调用下面的这句
bot = Bot(console_qr=2, cache_path='botoo.pkl')
# 获取当前路径信息
image_dir = os.getcwd() + '\\' + 'FriendImgs\\'
# 如果保存头像的FriendImgs目录不存在就创建一个
if not os.path.exists(image_dir):
    os.mkdir(image_dir)
os.popen('explorer' + image_dir)
my_friends = bot.friends(update=True)
# 获取好友头像信息并存储在FriendImgs目录中
n = 0
for friend in my_friends:
    print(friend)
    image_name = image_dir + str(n) + '.jpg'
    friend.get_avatar(image_name)
    n = n + 1

3.开发聊天机器人

我们先去 图灵机器人官网 注册账号。
创建机器人,进行机器人名称、应用领域、终端进行设置即可
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理
获得机器人API
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

from wxpy import *

# 扫码登陆
bot = Bot()

# 初始化图灵机器人
tuling = Tuling(api_key='***************************')

# 自动回复所有文字消息
@bot.register(msg_types=TEXT)
def auto_reply_all(msg):
    tuling.do_reply(msg)

# 开始运行
bot.join()

四.Python玩钉钉

1.自动群发钉钉消息

在钉钉内创建自定义机器人
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理
设置到最后,复制Webhook:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理
添加成功:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理
然后在pycharm中进行操作:
安装:pip install dingtalkchatbot

from dingtalkchatbot.chatbot import DingtalkChatbot

webhook = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx' #Webhook地址

ddrobot = DingtalkChatbot(webhook)

ddrobot.send_text(msg='钉钉机器人测试', is_at_all=True)  # is_at_all=True:表示@所有人
# at_mobiles=['111xxxxxxxx'] #需要@人的手机号
# ddrobot.send_text(msg='钉钉机器人测试',is_at_all=False,at_mobiles=at_mobiles)

运行结果:

Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

2.发链接和Markdown

(1)发送链接

import time
import hmac
import hashlib
import base64
import urllib.parse

# 安全设置为加签方式时:
# 第一步:把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。
timestamp = str(round(time.time() * 1000))
secret = 'xxxxxx'  # 设置加签时产生的密钥
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))

from dingtalkchatbot.chatbot import DingtalkChatbot

# 第二步:把 timestamp和第一步得到的签名值拼接到URL中。
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx&timestamp={}&sign={}'.format(timestamp, sign)

ddrobot = DingtalkChatbot(webhook)

ddrobot.send_link(title='博客', text='YFater的博客', message_url='https://blog.csdn.net/yuanfate',pic_url='https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=297750003,2704801218&fm=26&gp=0.jpg')

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理
(2)发送Markdown

import time
import hmac
import hashlib
import base64
import urllib.parse

# 安全设置为加签方式时:
# 第一步:把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。
timestamp = str(round(time.time() * 1000))
secret = 'xxxxxx'  # 设置加签时产生的密钥
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))

from dingtalkchatbot.chatbot import DingtalkChatbot

# 第二步:把 timestamp和第一步得到的签名值拼接到URL中。
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx&timestamp={}&sign={}'.format(timestamp, sign)

ddrobot = DingtalkChatbot(webhook)

ddrobot.send_markdown(title='博客', text='''# YFater的博客\n
>天知道你会遇见什么\n
>![图片](https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=297750003,2704801218&fm=26&gp=0.jpg)\n''')

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

五.文件管理

1.搜索文件

# 搜索文件的程序
import os

list_all = []
# win/mac/linux
for root, dirs, files in os.walk('E:/Python37'):
    for name in files:
        file_path = os.path.join(root, name)
        if 'python' in name:
            print(os.path.split(file_path))

运行结果:
Python自动化办公:数据分析、发送邮件、文件管理、python对微信及钉钉相关处理

扩展:搜索文件我们会使用Everything软件,快捷方便

2.一键打开办公软件

import os

# 打开谷歌
chrome = r'C:\Users\YFater\AppData\Local\Google\Chrome\Application\chrome.exe'
os.popen(chrome)

# 打开网易云音乐
cloudmusic=r'E:\网易云\CloudMusic\cloudmusic.exe'
os.popen(cloudmusic)

#打开任务管理器
taskmgr = 'taskmgr'
os.popen(taskmgr)

本文地址:https://blog.csdn.net/yuanfate/article/details/110479911