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

如何实现输入行号读取文本文件对应行?代码运行异常求助

问题分析与解决

你的代码存在两个核心问题:

  1. input() 获取的是字符串类型,直接传入readlines()会触发类型错误;
  2. readlines()的参数是读取的字节数,并非你想要指定的行号,逻辑完全不符合需求。

下面是两种正确的实现方案:

方案一:一次性读取所有行(适合小文件)

# 将输入的字符串转为整数
line_num = int(input('请输入要读取的行号: '))
# 使用with语句自动管理文件,无需手动调用close
with open('newfile.txt', 'r', encoding='utf-8') as file:
    lines = file.readlines()
    # 检查输入行号是否在有效范围内
    if 1 <= line_num <= len(lines):
        # 用户习惯从1开始数行,而列表索引从0开始,因此需要减1
        print(lines[line_num - 1].strip())  # strip()用于去除行尾的换行符
    else:
        print('输入的行号超出文件行数范围')

方案二:逐行读取(适合大文件,节省内存)

如果你的文件体积较大,一次性读取所有行会占用过多内存,推荐使用逐行遍历的方式:

line_num = int(input('请输入要读取的行号: '))
current_line = 0
with open('newfile.txt', 'r', encoding='utf-8') as file:
    for line in file:
        current_line += 1
        if current_line == line_num:
            print(line.strip())
            break
    else:
        # 循环正常结束(未触发break),说明找不到对应行号
        print('输入的行号超出文件行数范围')

关键注意事项

  • 必须用int()将输入的字符串转为整数,否则会触发类型错误;
  • 使用with语句操作文件是Python的最佳实践,能自动处理文件关闭,避免资源泄漏;
  • 增加行号范围检查,可防止用户输入的数字超过文件实际行数导致索引越界报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:52:05