如何在python中从文件中复制特定行

2024-04-27 12:24:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下内容的文件行。输入如果我给输入字符串“LOG_MOD_L0_RECEIVE_TXBRP_CONTROL”,那么它应该从

6.959999999:    LOG_MOD_L0_RECEIVE_TXBRP_CONTROL(0, 
 0x0059005f, 
 0x0049006d, 
 0x00b9008b, 
 0x001300b9)

这是我的档案:

^{pr2}$

我的代码:

fo=open("file1.txt","r")
fin=open("file2.txt","r")
string=raw_input("Enter the String:")
lines=fo.readlines()
   for line in lines:
       if string in line:
       fin.write(line)
fin.close()

它只复制了这么多。在

6.959999999:    LOG_MOD_L0_RECEIVE_TXBRP_CONTROL(0, 

直到右括号结束才复制。在


Tags: 文件intxtlogmodstringlineopen
1条回答
网友
1楼 · 发布于 2024-04-27 12:24:13

您必须分块读取文件;匹配的文本只显示在一行,但要获取其余行,您必须继续阅读:

with open("file1.txt","r") as fin, open("file2.txt","w") as fout:
    string = raw_input("Enter the String:")
    for line in fin:
        if string in line:
            fout.write(line)
            try: 
                while ')' not in line:
                    line = next(fin)
                    fout.write(line)
            except StopIteration:
                pass  # ran out of file to read

这将input file对象用作iterable,直接循环到带有for line in fin的open file对象上。一旦找到匹配的行,嵌套的while循环从同一个file对象读取更多的行,直到找到带有)的行。在

for循环在while循环完成后继续时,该循环将拾取文件对象现在前进到的位置。在

相关问题 更多 >