Python读取文件数字筛选偶数存入数组报类型错误如何解决
问题排查与修复方案
错误原因定位
- 核心错误:
f.read(10)方法返回的是字符串类型,遍历得到的每个num都是字符格式的内容(比如读到的内容是'1234'时,遍历得到的是'1'、'2'、'3'、'4'四个字符),Python中字符串和整数执行%运算会被识别为字符串格式化操作,因此触发类型错误。 - 逻辑缺陷:
read(10)仅读取文件前10个字符,若文件内数字为多位数、用空格/换行分隔,会出现内容读取不全、数字拆分错误的问题。 - 隐性问题:原代码未主动关闭文件句柄,长时间运行可能出现资源泄漏。
修复后可运行代码
如果文件中数字以空格、换行、制表符等空白字符分隔,使用如下代码:
array = [] # with上下文管理器会自动处理文件关闭,无需手动调用close() with open("LFx.txt", "r", encoding="utf-8") as f: # 读取全部内容后拆分出每个数字字符串,转为整数后判断奇偶 for num_str in f.read().split(): num = int(num_str.strip()) if num % 2 == 0: array.append(num) print(array)
如果文件中每个数字单独占一行,可使用逐行读取的写法:
array = [] with open("LFx.txt", "r", encoding="utf-8") as f: for line in f: line = line.strip() # 跳过空行避免转换报错 if not line: continue num = int(line) if num % 2 == 0: array.append(num) print(array)
内容的提问来源于stack exchange,提问作者Ghulam Yazdani
相关产品推荐
相关产品推荐

