1:导入了wxpy和wechat_sender 模块之后,运行登录微信web端的代码,抛出异常。
环境:win10 pychram编译器 Python3.6
代码如下:
初始化登录
from wxpy import *
from wechat_sender import *
bot = Bot()
|
Bot()在初始化时便会执行登陆操作,需要手机扫描登陆。
classwxpy.Bot(cache_path=None, console_qr=False, qr_path=None, qr_callback=None, login_callback=None, logout_callback=None)
|
参数:
- 设置当前会话的缓存路径,并开启缓存功能;为 None (默认) 则不开启缓存功能。
- 开启缓存后可在短时间内避免重复扫码,缓存失效时会重新要求登陆。
- 设为 True 时,使用默认的缓存路径 ‘wxpy.pkl’。
- 在终端中显示登陆二维码,需要安装 pillow 模块 (pip3 install pillow)。
- 可为整数(int),表示二维码单元格的宽度,通常为 2 (当被设为 True 时,也将在内部当作 2)。
- 也可为负数,表示以反色显示二维码,适用于浅底深字的命令行界面。
- 例如: 在大部分 Linux 系统中可设为 True 或 2,而在 macOS Terminal 的默认白底配色中,应设为 -2。
- qr_path – 保存二维码的路径
- qr_callback – 获得二维码后的回调,可以用来定义二维码的处理方式,接收参数: uuid, status, qrcode
- login_callback – 登陆成功后的回调,若不指定,将进行清屏操作,并删除二维码文件
- logout_callback – 登出时的回调
异常情况:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python.exe D:/Mycode/Python/wechat_sender/test/sendmes.py
Getting uuid of QR code.
Downloading QR code.
Traceback (most recent call last):
File "D:/Mycode/Python/wechat_sender/test/sendmes.py", line 3, in <module>
bot = Bot()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\wxpy\api\bot.py", line 86, in __init__
loginCallback=login_callback, exitCallback=logout_callback
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\itchat\components\register.py", line 35, in auto_login
loginCallback=loginCallback, exitCallback=exitCallback)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\itchat\components\login.py", line 44, in login
picDir=picDir, qrCallback=qrCallback)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\itchat\components\login.py", line 117, in get_QR
utils.print_qr(picDir)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\itchat\utils.py", line 86, in print_qr
os.startfile(fileDir)
OSError: [WinError 1155] 没有应用程序与此操作的指定文件有关联。: 'QR.png'
|
解决方法:
http://www.iplaypy.com/wenda/wd19142.html
打开这个文件C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\itchat\utils.py
导入import webbrowser模块,之后修改这段代码,
def print_qr(fileDir):
if config.OS == 'Darwin':
subprocess.call(['open', fileDir])
elif config.OS == 'Linux':
subprocess.call(['xdg-open', fileDir])
elif config.OS == 'Windows':
#subprocess.call(['cmd', fileDir])
#os.startfile(fileDir)
webbrowser.open(fileDir)
else:
os.startfile(fileDir)
|
然后运行登录代码,即可打开浏览器,然后关闭浏览器,扫描生成的二维码图片即可登录成功。
Getting uuid of QR code.
Downloading QR code.
Please scan the QR code to log in.
Please press confirm on your phone.
Loading the contact, this may take a little while.
Login successfully as 鹏鹏
| 作者:小运维的博客
|
|