解决Python使用wxpy模块登录微信。就会抛出异...

885 阅读2分钟
1:导入了wxpy和wechat_sender 模块之后,运行登录微信web端的代码,抛出异常。

环境:win10 pychram编译器 Python3.6

代码如下:

初始化登录

from wxpy import *

from wechat_sender import *

bot = Bot()


Bot()在初始化时便会执行登陆操作,需要手机扫描登陆。

class
wxpy.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'


解决方法:


打开这个文件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 鹏鹏


更多免费技术资料可关注:annalin1203