You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MicroPython读取文件转整数报错ValueError:无效十进制整数语法

问题分析与解决

错误原因

你尝试转换的字符串里大概率包含不可见的空白字符(比如换行符\n、空格),int()函数只能解析纯数字字符串,这些额外字符会触发ValueError。

比如你打印的line看起来是0000,但实际变量可能是'0000\n'(带有换行符),直接转整数就会失败。

快速修复方案

在转换前用strip()方法去除字符串首尾的所有空白字符:

lt = line.strip()  # 去掉换行、空格等空白
lt2 = int(lt)

同理,R/G/B的字符串也需要做同样处理:

r_val = int(rl.strip())
g_val = int(gl.strip())
b_val = int(bl.strip())

更健壮的读取方式

你当前按固定字符数读取的方式容易出错(比如文件格式细微变化就会读错),建议改为按行读取后分割:
假设你的文件每行格式是索引,R,G,B(比如0000,002,001,003),可以这样写:

file1 = open('01b.txt', 'r')
for raw_line in file1:
    line = raw_line.strip()
    if not line:
        continue  # 跳过空行
    # 按逗号分割成各个字段
    idx_str, r_str, g_str, b_str = line.split(',')
    # 转换为整数
    idx = int(idx_str)
    r = int(r_str)
    g = int(g_str)
    b = int(b_str)
    # 这里调用LED设置像素的代码
    print(f"设置像素 {idx}: R={r}, G={g}, B={b}")
file1.close()

验证方法

如果不确定字符串里有什么,可以用repr()打印变量的真实内容:

print(repr(line))

如果输出是'0000\n',就说明确实带有换行符,这就是转换失败的根源。

内容的提问来源于stack exchange,提问作者KlaireL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 05:07:23