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

Python 2.7读取文件创建嵌套列表失败,寻求解决方案

解决从文件读取数据创建嵌套导航列表的问题

嘿,我来帮你搞定这个问题!你已经有了可以正常运行的硬编码嵌套列表,现在要把这个逻辑改成从数据文件读取生成,对吧?下面一步步给你讲清楚怎么做:

1. 先明确数据文件的格式

首先得确定你的数据文件是什么样的,假设你用的是一个文本文件(比如叫nav_data.txt),里面每行存一个房间的信息,用逗号分隔名称和坐标,就像这样:

studio,145.0,155.0
kitchen,245.0,400.0

如果你的文件是用空格或者其他符号分隔的,后面调整分割的方式就行。

2. 读取文件生成嵌套列表的完整代码

直接给你能用的Python代码,运行后就能得到和你硬编码一模一样的nav_Array:

nav_Array = []

# 用with语句打开文件,会自动帮你关闭,不用手动管
with open('nav_data.txt', 'r', encoding='utf-8') as file:
    # 逐行读取文件里的内容
    for line in file:
        # 先把每行末尾的换行符去掉,再按逗号切成一个个字段
        parts = line.strip().split(',')
        # 把坐标字符串转成浮点数(和你硬编码的类型一致),然后拼成子列表加进去
        nav_Array.append([parts[0], float(parts[1]), float(parts[2])])

# 测试输出,和你原来的硬编码效果完全一样
print(nav_Array[0])
print(nav_Array[1])
print("\n")
print(nav_Array[0][0])
print(nav_Array[0][1])

3. 给你拆解一下代码逻辑

  • with open(...):这是Python里处理文件的最佳实践,不用手动写file.close(),避免忘记关闭文件导致资源浪费
  • line.strip():去掉每行开头结尾的空格和换行符,避免分割出空字符串
  • split(','):把一行内容按逗号拆成列表,比如"studio,145.0,155.0"会变成["studio", "145.0", "155.0"]
  • float(parts[1]):把坐标的字符串转成浮点数,保证和你硬编码的数值类型一致,这样后续机器人导航计算不会出问题

4. 额外加个容错处理(可选)

如果担心数据文件里有格式错误(比如空行、少字段、坐标不是数字),可以加个简单的异常处理,让程序不会直接崩溃,还能提示哪里错了:

nav_Array = []

with open('nav_data.txt', 'r', encoding='utf-8') as file:
    # 用enumerate可以拿到行号,方便定位错误
    for line_num, line in enumerate(file, 1):
        cleaned_line = line.strip()
        # 跳过空行
        if not cleaned_line:
            continue
        parts = cleaned_line.split(',')
        # 检查是不是正好3个字段
        if len(parts) != 3:
            print(f"⚠️ 第{line_num}行格式不对,跳过啦")
            continue
        try:
            # 尝试转成浮点数,失败就捕获异常
            nav_Array.append([parts[0], float(parts[1]), float(parts[2])])
        except ValueError:
            print(f"⚠️ 第{line_num}行的坐标不是有效数字,跳过啦")

# 最后输出生成的列表
print(nav_Array)

这样不管文件里有啥小问题,程序都能平稳运行,还能告诉你哪里出问题了,调试起来更方便~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:19:51