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
相关产品推荐
相关产品推荐

