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

Python如何从文本文件打印指定行 读取可被2整除的行报int转换错误求助

错误原因分析
  • readline()方法参数使用错误:file.readline(size)的入参size表示单次最多读取的字节数,并非行号。你的代码中变量y从0开始递增,首次调用My_file.readline(0)会直接返回空字符串,对空字符串执行整数转换就会触发你遇到的报错。
  • 文件行重复读取:你已经使用for line in My_file迭代文件对象,该逻辑每次循环会自动读取一行存入line变量,你在循环体内又多次调用readline(),相当于每次循环额外多读取2行内容,很快就会读完整个文件,后续readline()调用都会返回空字符串,同样会触发整数转换错误。
修正后实现代码
z = 20
# 写入数字到文件,使用with上下文管理器自动处理文件关闭
with open("Numbers", 'w') as My_file:
    for x in range(1, z + 1):
        My_file.write(f"{x}\n")

# 读取文件并筛选可被2整除的数字
with open("Numbers", 'r') as My_file:
    for line in My_file:
        # 去除行首尾空白字符(包含换行符)后转整数
        num = int(line.strip())
        if num % 2 == 0:
            print(num)
修正说明
  • 采用with关键字管理文件操作,无需手动调用close()方法,避免文件资源泄漏问题
  • 直接使用迭代得到的line变量处理每行内容,不再混用readline()造成重复读
  • 转换整数前先调用strip()去除行尾换行符和多余空白,避免特殊字符干扰转换

内容的提问来源于stack exchange,提问作者Rimants Šiupienis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:15:05