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

如何按指定行号读取文件内容?代码执行异常求助

解决方法:按指定行号读取文件内容

嘿,我一眼就看出问题出在哪啦!你代码里用的readlines(fixchoice),这个方法的参数根本不是行号——它是用来指定读取的字节数上限的!也就是说,你输入的数字其实是告诉程序“最多读这么多字节的内容”,而不是“读第X行”,这就是为啥不管输啥数字,输出的内容都差不多。

下面给你两种靠谱的解决办法,按需选择就行:

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

如果你的文件不大,直接把所有行读到列表里,然后用索引取对应行就行——注意列表索引是从0开始的,所以输入的行号要减1哦:

def option_a():
    fixchoice = int(input("Enter line number: "))
    # 用with语句自动关闭文件,避免资源浪费
    with open("firesideFixtures.txt", "r") as file:
        all_lines = file.readlines()
        # 先检查输入的行号是否有效
        if 1 <= fixchoice <= len(all_lines):
            # strip()用来去掉行尾的换行符,输出更整洁
            print(all_lines[fixchoice - 1].strip())
        else:
            print("哎呀,这个行号不存在!")
option_a()

方法2:逐行遍历(适合大文件)

如果文件特别大,一次性读入所有行会占用太多内存,那就用enumerate逐行遍历,找到目标行就停止:

def option_a():
    fixchoice = int(input("Enter line number: "))
    with open("firesideFixtures.txt", "r") as file:
        # enumerate的start参数设为1,让行号从1开始计数,和用户输入对应
        for line_number, line_content in enumerate(file, start=1):
            if line_number == fixchoice:
                print(line_content.strip())
                break
        else:
            # 如果循环正常结束(没触发break),说明没找到对应行
            print("这个行号不在文件里哦!")
option_a()

再给你补个知识点:readlines()不带参数的时候,才会返回文件所有行的列表;带参数的话,它会读取到指定字节数的位置,然后返回截止到那里的所有完整行——这就是你之前代码出错的核心原因啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:01:01