Python脚本发送ZPL标签至Zebra ZD420打印机连接报错求助
解决Python发送ZPL到Zebra打印机的连接错误
你的代码里有几个直接导致连接失败的错误,逐个修正如下:
- 删除多余的bind操作:作为客户端连接打印机,不需要执行
s.bind((host, port))——这是服务器端用来绑定监听端口的代码,客户端执行这行只会引发连接异常,直接删掉。 - 文件名添加引号:
open(label.prn, 'r')里的label.prn必须用引号包裹成字符串,写成open('label.prn', 'r'),否则Python会把它当成未定义的变量,触发NameError。 - readlines补全括号:
lines = h.readlines要改成lines = h.readlines(),前者只是引用方法本身,后者才是执行方法读取文件所有行,不然遍历的时候会出错。 - 修正send方法参数:
mysocket.send(b, arr)完全错误,send只需要传入字节对象,改成mysocket.send(arr)即可,多余的b直接删掉。 - 优化文件读取方式(可选):ZPL文件建议用二进制模式读取发送,避免编码问题,而且一次性读取发送比逐行处理更高效。
修正后的完整代码:
import socket mysocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = "192.168.1.35" port = 9100 try: mysocket.connect((host, port)) # 连接打印机 # 二进制读取文件并一次性发送,确保数据完整 with open('label.prn', 'rb') as h: zpl_content = h.read() mysocket.sendall(zpl_content) mysocket.close() except Exception as e: # 打印具体错误信息,方便后续排查 print(f"错误详情: {str(e)}")
另外,把except:改成except Exception as e并打印具体错误,能帮你更快定位其他潜在问题,比如文件路径不对、打印机端口不通等。
内容的提问来源于stack exchange,提问作者user22200427
相关产品推荐
相关产品推荐

