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

Python删除文件指定索引区间行时程序无响应问题排查

问题分析与修正

你的代码存在几个关键问题,直接导致程序无响应且输出不符合预期:

核心错误点

  • 冗余嵌套循环:外层遍历每一行的同时,内层又循环499次(range(1, num)),总行数×499的执行量会让程序在文件行数较多时直接卡死,完全没必要。
  • 判断逻辑完全偏离需求:if number not in [x] 是在逐个判断行号是否不等于某个x值,根本没覆盖你要跳过的0到500索引范围——而且range(1, num)只到499,连索引0和500都没包含进去。
  • 写入内容错误:ftpw.write(str(linesr)) 是把整个行列表转成字符串写入,输出的会是['line1', 'line2', ...]这种列表格式,而非正常的文本行,还会重复写入无数次。

修正后的代码

方式一:适合中小文件(一次性读取)

直接通过切片获取需要保留的行,简洁高效:

num = 500

with open('in.txt', 'r') as ftpr, open('out.txt', 'w') as ftpw:
    lines = ftpr.readlines()
    # 索引0到500共501行,从501开始的行即为需要保留的内容
    ftpw.writelines(lines[num+1:])

方式二:适合大文件(逐行读取,低内存占用)

避免一次性加载所有内容到内存,性能更优:

num = 500

with open('in.txt', 'r') as ftpr, open('out.txt', 'w') as ftpw:
    # 先跳过前501行(索引0到500)
    for _ in range(num+1):
        next(ftpr)
    # 写入剩余所有行
    for line in ftpr:
        ftpw.write(line)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:50:22