Python从文件读取列表仅显示最后一项的问题求解
问题原因分析
你的代码存在两个核心问题,导致只能获取到最后一个元素:
每次循环都重新赋值
dataList,覆盖之前的内容
在for line in data:循环里,你每次都执行dataList = newLine.split('\n'),这意味着每遍历一行就会新建一个dataList,之前行的内容会被直接丢弃。循环结束后,dataList自然只保留最后一行的处理结果。未处理文件中的空行(隐性问题)
你的data.txt里数字行之间存在空行,这些空行在遍历过程中也会被当作一行处理。虽然当前问题未体现,但如果修复第一个问题后,空行会被转化为空字符串加入列表,影响最终结果。
修复后的代码
# 初始化空列表存储所有数字 dataList = [] # 使用with语句自动管理文件,无需手动调用close() with open('data.txt', 'r') as data: for line in data: cleaned_line = line.strip() # 移除换行符和首尾空白字符 if cleaned_line: # 跳过空行,只保留有效数字行 dataList.append(cleaned_line) print('The numbers are ', dataList) countNumbers = len(dataList) print('The count of the numbers is ', countNumbers)
修复说明
- 提前初始化
dataList = [],循环中用append()将有效内容添加到列表,而非每次重新赋值,保证所有行的内容都被保留。 - 使用
with open(...)语句,Python会在代码块结束后自动关闭文件,比手动调用close()更安全可靠。 - 用
line.strip()统一移除换行符和空白,再通过if cleaned_line:过滤空行,避免无效内容混入列表。
修复后运行代码,输出结果为:
The numbers are ['90', '100', '80'] The count of the numbers is 3
内容的提问来源于stack exchange,提问作者whatsanoven
相关产品推荐
相关产品推荐

