解决“ValueError: Stop argument for islice() must be None or an integer: 0 <= x <= sys.maxsize.”

在进行LDA实验时,遇到了这个报错

ValueError: Stop argument for islice() must be None or an integer: 0 <= x <= sys.maxsize.

解决办法:
将 代码中的num_of_docs*0.75加上int
即用 int(num_of_docs*0.75) 进行替换
再次运行,解决!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个错误通常是由于 PyModbus 的 `StartTcpServer` 或 `StartSerialServer` 函数中的 `port` 参数类型不正确导致的。根据您的错误信息,似乎您在配置从站时使用了 Windows 系统下的 `serial` 库,因此可能需要对代码稍作调整。 在 Windows 系统下,串口的配置方式与 Linux 或其他类 Unix 系统下略有不同,因此需要使用 `pymodbus.client.sync.ModbusSerialClient` 类来代替 `serial.Serial` 实例。修改后的代码如下: ```python from pymodbus.server.sync import StartTcpServer from pymodbus.server.sync import StartSerialServer from pymodbus.datastore import ModbusSequentialDataBlock, ModbusSlaveContext, ModbusServerContext from pymodbus.transaction import ModbusRtuFramer from pymodbus.client.sync import ModbusSerialClient import logging # 配置日志记录 logging.basicConfig() log = logging.getLogger() log.setLevel(logging.DEBUG) # 配置串口 serial_port = ModbusSerialClient(method='rtu', port='COM1', baudrate=9600, timeout=0.5) # 配置从站 slave_id = 1 block_size = 100 # 修改为需要读取的数据块大小 data = ModbusSequentialDataBlock(0, [0] * block_size) context = ModbusSlaveContext(slaves={slave_id: data}) context_store = ModbusServerContext(slaves=context, single=False) # 启动 Modbus 从站 StartSerialServer(context_store, framer=ModbusRtuFramer, port=serial_port, timeout=1) ``` 在这段代码中,我们使用 `ModbusSerialClient` 类来初始化了一个 Windows 系统下的串口对象,并将其传递给了 `StartSerialServer` 函数的 `port` 参数。这样就可以正确启动一个基于串口的 Modbus 从站了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

居贝比

如有帮助,打个赏,恰个饭~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值