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

从外部文件导入数字存为Python列表时遇NameError问题求助

解决从文本文件导入数值为Python列表的问题

看起来你的代码有两个主要问题导致了错误,咱们一步步来修正:

1. 触发NameError的直接原因

你提到的错误NameError: name 'sample' ...,大概率是调用函数时的两个细节错误:

  • 要么是函数名拼写不一致:你定义的函数是imported_numbers(末尾带s),但调用时写成了imported_number(少了s);
  • 要么是调用时漏写了文件名的引号:比如写成imported_numbers(sample.txt),这时候Python会把sample当成一个未定义的变量,而非字符串文件名。

2. 读取内容后的逻辑问题

就算函数调用正确,f.readlines()也不会直接给你数字列表——它会把文件的每一行作为字符串存入列表,你的文件内容是一行,所以得到的是['1, 2, 3, 4, 5, 6'],这显然不是你想要的整数列表,需要额外处理。

修正后的完整代码

def imported_numbers(filename):
    with open(filename, 'r') as f:
        # 读取全部内容并去除首尾空白(比如换行符)
        content = f.read().strip()
        # 按逗号分割字符串,得到每个数字的字符串形式
        num_strings = content.split(',')
        # 清理每个字符串的空格并转换为整数
        num_list = [int(num.strip()) for num in num_strings]
        print(num_list)
        return num_list

# 注意函数名拼写正确,文件名必须用引号包裹
imported_numbers('sample.txt')

代码解释

  • f.read().strip():一次性读取整个文件的内容,并用strip()去掉开头结尾的空白字符(比如文件末尾的换行),得到干净的字符串"1, 2, 3, 4, 5, 6"。
  • split(','):把字符串按逗号分割成列表,结果是['1', ' 2', ' 3', ' 4', ' 5', ' 6']。
  • 列表推导式:遍历分割后的每个字符串,先用strip()去除前后空格,再用int()转换为整数,最终得到目标列表[1, 2, 3, 4, 5, 6]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:34:35