Python3 - 从多个文本文件中提取行

Python3 - extract lines from multiple text files

谁能检查一下这个脚本有什么问题。可以像我一样使用“for 循环”吗?我有多个测量文件(1.cnv、2.cnv 等),我想从中提取以“span 1 =”和“cast”开头的行,之后我想把所有这些行到单个 summary.txt 文件。

import re
import os
errors = []
linenum = 0

pathin = r'C:\python_test'
flist = [pathin+vv for vv in os.listdir(pathin) if vv.__contains__('.cnv')==True]

find_1 = re.compile(r"span 1 =")
find_2 = re.compile(r"cast ")

for fname in flist:
    for line in fname:
        linenum += 1
        
        if find_1.search(line) != None:
            errors.append((linenum, line.rstrip('\n')))

        if find_2.search(line) != None:
            errors.append((linenum, line.rstrip('\n')))
        
        for err in errors:
            print(err[1])
            with open("summary.txt", "a") as myfile: myfile.write(err[1] + "\n")

您可以列出所有文件并使用 for 循环读取带有 pandas 或 open() 的行。您可以将每个文件的输出存储在一个新列表中,并制作一个包含输出的新 csv 文件。

创建一个新列表来存储您找到的行。使用 open() 函数打开文件并在结果上调用 readlines()。然后迭代这些行并使用正则表达式匹配包含“time=”和“value2=”的行。如果匹配,将该行添加到您的列表中。对每个文件重复。处理完所有文件后,将新的行列表写入新文件

您可以使用 python 字符串方法 startswith()。这是 documentation.

打开文件后,您可以运行以下代码:

for line in opened_file: linenum += 1
      if line.startswith("time=") or line.startswith("value2="):
            errors.append((linenum, line.rstrip('\n')))