Python脚本调用write()函数传参报错,求解决方案
问题根源
你遇到的错误是因为命名冲突:同时导入了keyboard和pyautogui两个库,它们都包含write函数,当前代码实际调用的是keyboard.write而非你需要的pyautogui.write。
keyboard.write不支持delay关键字参数,只能用位置参数传递延迟值,这是第一个错误的直接原因;- 即便去掉关键字参数,
keyboard.write的行为逻辑和pyautogui.write完全不同,因此会触发第二个错误。
解决方案
1. 避免通配符导入(推荐)
通配符from ... import *极易引发命名冲突,改用明确的模块导入是最稳妥的方案:
import random import keyboard import pyautogui as pg # 给pyautogui起别名,明确区分函数归属 import time import os cardnum = input('Введите номер карты \n>>>') date = input('Введите дату карты \n>>>') cvv = input('Введите CVV карты\n>>>') # 修正原输入提示的错误 name = input('Введите имя владельца карты \n>>>') address = ['Kurtuluş Mh.','Kennedy Cd', 'Kocatepe Mh.','Cennet Mh.','Bostancı Mh.','Karakusunlar Mh 1545 Sk No 7 - Balgat','İnönü Cd Malatyapark Alışveriş Merkezi No:192','Bostancı Mh.',' Ortamahalle Mh.',' Siteler Mh.','Üsküdar Cd No:5 D:11','Beştepeler Mh. Yaşam Cd. No:5 Pk:06510 Yenimahalle/ankara','Fulya Mh.','Beştepeler Mh.','Arnavutköy Merkez Mh.',' Camikebir Mah.7 Eylül sok.No:09(Old town) 09400 Kuşadası',' Fikirtepe Mh.','Merkez Mh.','Ataköy 7-8-9-10 Mh.','Kapaklı Köyü Hoyran Mahallesi No:25','Tomtom Mh.','Emniyet Mh.','Çarşı Cd No:3','Akşemseddin Mh.','Kızlar Pınarı Mh.','Barbaros Blv','Büyük Dere Cd Yonca Apt. B Blok No:151 D:21', 'İstanbul İstiklal Caddesi Balo Sok.no 1/3'] cityes = ['Soma','Zeytinburnu','Bayrampaşa','Küçükçekmece','Kadıköy','Çankaya','Yeşilyurt','Fatih','Beyoğlu','Konak','Ümraniye','Aksu','Bayraklı','Çankaya','Muratpaşa','Fatih','Nilüfer','Kadıköy','Altındağ','Kartal','Kadıköy','Seyhan','Buca'] states = ['İstanbul','Antalya','Ankara','Malatya','Aydın',' Beşiktaş','Şişli','Beyoğlu','İzmir','Menderes','Bursa','Adana',] postcode = ['45502','34025','34045','34290','34740','06530','44070','34098','34379','34435','35210','34775','07112','35495','35540','07160','34122','34720','01010','35380'] while True: ready = input(f'Как надо будет вывести нажмите Enter') time.sleep(3) pg.moveTo(800, 515) # 移除多余逗号,修正语法错误 pg.click() time.sleep(0.3) pg.write(cardnum, delay=0.1) # 明确调用pyautogui的write,支持delay关键字参数 time.sleep(0.3) # 把逗号改为小数点,修正sleep参数错误 pg.moveTo(741,626) pg.click() pg.write(date, delay=0.1) time.sleep(0.3) pg.moveTo(1020,605) pg.click() pg.write(cvv, delay=0.1) time.sleep(0.3) pg.moveTo(740,715) pg.click() pg.write(name, delay=0.1) pg.moveTo(1180,845) pg.click() time.sleep(5)
2. 调整导入顺序(不推荐)
如果坚持使用通配符导入,可将pyautogui的导入放在keyboard之后,让pyautogui.write覆盖keyboard.write:
from random import * from time import * from os import * from keyboard import * from pyautogui import * # 放在最后,覆盖同名的write函数
但这种方式仍存在代码混淆风险,不建议长期使用。
额外修复的小问题
- 原代码中
moveTo,(800, 515)多了逗号,会触发语法错误,已修正为moveTo(800, 515); sleep(0,3)中的逗号是错误的,已改为小数点sleep(0.3);- 重复导入了
random库,已清理冗余导入; - CVV的输入提示写错为“Введите номер карты”,已修正为“Введите CVV карты”。
内容的提问来源于stack exchange,提问作者user21148656
相关产品推荐
相关产品推荐

