通过模式匹配从多个文件中提取行并将它们写入Linux中的另一个文件 - python

我有20个档案。我想通过匹配模式'<script src="{%.*%}>'从这20个文件中提取行,并将这些行写入新文件。

我也想从原始文件中删除这些行。

除了我尝试过的那可怕的方法之外,还有其他更好的方法吗?

这是我的尝试:

import os
import sh

folder_path='/home/username/folder/'
match_phrase = '<script src="{%'
new_file = '/home/username/file.txt'

files = os.listdir(folder_path)
print files
for file in files:
    full_filename = folder_path + file
    lines=[]
    line_nos=[]

    with open(full_filename) as myFile:
        for num, line in enumerate(myFile, 1):
            if match_phrase in line:
                line_nos.append(num)
                lines.append(line)
        print lines
        print line_nos

        with open(new_file,'a') as newfile:
            for line in lines:
                newfile.write(line)

    for del_line in line_nos:
        print "deleting line %s from file=%s"%(del_line,full_filename)
        del_line=str(del_line)+'d'
        sh.sed('-i',del_line,full_filename)

python大神给出的解决方案

使用sed:

sed -i -e "/$pattern/w $newfile" -e "/$pattern/d" $files

Sed的w命令将匹配项写入其他文件。 d删除它。

例:

$ pattern='<script src="{%'
$ files=/home/username/folder/*
$ newfile=/home/username/file.txt
$ 
$ sed -i -e "/$pattern/w $newfile" -e "/$pattern/d" $files

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

查找字符串中的行数 - python

我正在创建一个python电影播放器​​/制作器,我想在多行字符串中找到行数。我想知道是否有任何内置函数或可以编写代码的函数来做到这一点:x = """ line1 line2 """ getLines(x) python大神给出的解决方案 如果换行符是'\n',则nlines …

字符串文字中的正斜杠表现异常 - python

为什么S1和S2在撇号位置方面表现不同?S1="1/282/03/10" S2="4/107/03/10" R1="".join({"N\'" ,S1,"\'" }) R2="".join({"N\'…