如何在Python中复制特定行?附无报错代码求助
问题排查:Python复制特定行功能未生效
嘿,我来帮你揪出代码里的问题!你的代码运行没报错,但复制行的功能完全没起作用,核心原因是你写的复制逻辑根本没有实际执行写入文件的操作,而且逻辑本身也和你的需求不匹配。
先看看你原来的代码:
import sys from math import log import datetime import numpy as np from itertools import repeat x = 1 y = 2 z= 24 T=int(z/(x+y)) with open('A.txt', 'r') as f: lines = f.readlines() with open('A.txt', 'w') as f: for i,line in enumerate(lines): if i==10: f.write(str("Papa")+'\n') f.write(str(x)+ "*31 /"+'\n') f.write(str("Mama")+'\n') f.write(str(y)+ "*31 /"+'\n') [x for item in lines for x in repeat(item, T)] # 这里是无效代码 else: f.write(line)
问题拆解
无效的列表推导式
你写的[x for item in lines for x in repeat(item, T)]只是生成了一个包含所有行重复T次的列表,但你既没有把这个列表赋值给变量,也没有遍历它将内容写入文件。这行代码相当于“做了一堆工作但全扔了”,完全不会影响输出文件。逻辑偏离需求
这个推导式是遍历整个文件的所有行并重复,而不是针对你要操作的特定行(i==10的那一行),就算你后续处理这个列表,也会把所有行都重复写入,和你“复制特定行”的需求不符。
修正方案
假设你的需求是:遍历到第10行(注意enumerate从0开始计数,i==10对应文件的第11行)时,先写入你指定的Papa、计算式等内容,然后将当前的第10行重复T次写入文件,之后继续处理其他行。修正后的代码如下:
import sys from math import log import datetime import numpy as np from itertools import repeat x = 1 y = 2 z= 24 T=int(z/(x+y)) # 计算得T=8 with open('A.txt', 'r') as f: lines = f.readlines() with open('A.txt', 'w') as f: for i,line in enumerate(lines): if i == 10: # 先写入你指定的内容 f.write("Papa\n") f.write(f"{x}*31 /\n") # 用f-string更简洁 f.write("Mama\n") f.write(f"{y}*31 /\n") # 重复写入当前的第10行T次 for repeated_line in repeat(line, T): f.write(repeated_line) else: f.write(line)
额外提醒
如果你想操作的是从1开始数的第10行(也就是文件里的第10行),记得把i == 10改成i == 9,因为enumerate默认从0开始计数。
内容的提问来源于stack exchange,提问作者Rory




