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

Python如何从文本文件读取数值拆分赋值给温湿度变量

问题根因

你运行代码只返回2的原因有两个:

  • 字符串的split(':')方法不会修改原始字符串,执行后会返回分割完成的新列表,你没有把这个返回结果赋值给变量,这行split调用等于没有生效
  • mylines[0]是读入的第一行原始字符串(内容为"22:48\n"),直接写mylines[0][1]是取字符串的第二个字符,也就是第一个'2'后面的字符'2',自然只会输出2。
可直接运行的正确代码

如果只需要读取第一行的历史温湿度,不需要把整个文件的所有行都存入列表,直接读取第一行处理即可,注意要把读出来的字符串转成数值类型,方便后续和新采集的读数做对比:

with open('log.txt', 'r', encoding='utf-8') as f:
    # 读第一行,同时去掉行尾的换行符、多余空格
    first_line = f.readline().strip()

# 按冒号分割后转成整数,分别赋值给两个变量
temp, humidity = map(int, first_line.split(':'))

# 打印验证结果
print(f"历史温度:{temp}℃,历史湿度:{humidity}%")

如果你后续还要用到其他行的历史记录,想保留原来逐行读入列表的逻辑,只需要修改分割赋值的部分即可:

mylines = []                              
with open ('log.txt','r', encoding='utf-8') as myfile: 
     for myline in myfile:
         # 逐行读入时就去掉换行符,减少后续处理步骤
         mylines.append(myline.strip())           

# 接收split的返回结果,再转成数值
line_parts = mylines[0].split(':')
temp = int(line_parts[0])
humidity = int(line_parts[1])

print(temp, humidity)

提示:如果你存储的温湿度是带小数的数值,把代码里的int替换成float就可以正常转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:43:02