A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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)

参数:
  • cache_path
    • 设置当前会话的缓存路径,并开启缓存功能;为 None (默认) 则不开启缓存功能。
    • 开启缓存后可在短时间内避免重复扫码,缓存失效时会重新要求登陆。
    • 设为 True 时,使用默认的缓存路径 ‘wxpy.pkl’。

  • console_qr
    • 在终端中显示登陆二维码,需要安装 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 鹏鹏


作者:小运维的博客


3 个回复

正序浏览
回复 使用道具 举报
回复 使用道具 举报
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马