【本文的我,是一个文科财务工作者。在单位信息化全靠人做的年代,确实工作压力大也忙不过来。9102年的我,深感不学习点新知识迟早要被淘汰。所以今天开始记录自己的python小白笔记,各位见笑。】
开始前,给自己立个flag,主要学习内容两个:
(1)提升办公效率
(2)pandas库学习
————————————————我是分隔符——————————————————————
day1 基础软件安装
day2 拿来主义:配置微信发票机器人实例
day1 基础软件安装
安装anaconda\pycharm\cmder
软件介绍:Pycharm是集成开发环境(操作平台),Anaconda是集成环境管理器(库包),cmder 好用的程序操作命令
参考文档:
Python入门:Anaconda和Pycharm的安装和配置
[https://www.cnblogs.com/yuxuefeng/articles/9235431.html]
cmder配置指南
[https://www.jianshu.com/p/979db1a96f6d]
day2 配置微信发票机器人实例
特别感谢原作者:李达西,原来的ocr模块使用的票小秘功能,跟达西大牛沟通后帮我免费改成百度ai,良心好人啊!
(0)pip install 安装对应库包(wxpy)
(1)下载github上编译好的发票机器人实例
[https://github.com/dashleee/WechatInvoiceParser]
(2)配置百度AI,获取AK\SK
这块设置可以参考:百度API使用入门教程:[http://ai.baidu.com/forum/topic/show/867951]
ps:里面有坑,用的库urllib2 在python3里面已经取消了。获取access_token 看我下面代码。
(3)获取access_token
import urllib.request
import json
ak='输入AK'
sk='输入sk'
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s'%(ak,sk)
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
content = response.read()
json_all=json.loads(content)
access_token=json_all['access_token']
print(access_token)
(4)部分代码优化
a.wechat模块-wxpy库:启动缓存功能,避免短时间经常扫码
self.bot = Bot()
修改为
self.bot = Bot(console_qr=True, cache_path=True)
b.通过利用Supervisor监控保持机器人长时间登陆
安装
supervisor是一个python写成的程序,因此可以简单地通过pip来进行安装:
pip install supervisor
调整 wxpy设置
如果想使用supervisor的重启功能,我们必须开启wxpy的缓存功能以储存登录状态,具体操作在登录时增加cache_path参数:
bot = Bot(cache_path=True)
你也可以自由选择将缓存存在什么文件中,以免多个机器人冲突
配置
官方提供了一个默认的配置文件,你可以使用这条命令输出到你放置机器人的文件夹中:
echo_supervisord_conf > supervisord.conf
在这个supervisord.conf后面,我们再追加对微信机器人程序的控制
[program:bot]
command=python ./wxbot.py ;执行机器人文件,请修改文件名
process_name=%(program_name)s
autostart=true ; 程序是否随supervisor启动而启动
autorestart=true ;程序停止时,是否自动重启
startsecs=10
启动和控制
从命令启动supervisor只需要一句:
supervisord -c supervisord.conf
-c用以指定配置文件,也就是我们刚刚编写的文件。
使用supervisor还可以方便的开始、重启和停止程序:
supervisorctl start bot # 开始程序,bot 是刚刚填写的程序名
supervisorctl restart bot # 重启程序
supervisorctl stop bot # 停止程序
使用supervisor查看自己的程序运行状态
supervisorctl status # 查看状态
因此,只要将wxpy的缓存打开,并且使用supervisor进行自动重启,我们就可以获得一个长时间保持登录的自动回复机器人啦!
(5)部分代码屏蔽
pushover 模块因为需要收费,秉着不给钱的态度(穷,没经费支持)这块代码我全部注释掉了。
(6)后续可优化点
增加发票类别识别,自动识别该发票类别并回复是否属于可用发票。
(7)异常说明
a.wxpy 扫码登录微信报错 KeyError: 'pass_ticket'
wxpy基于wxpy库,需要调用网页版本的微信。如果是新号,无法登陆网页版本微信号。所以会调用失败。无解决方案。
网友评论