【问题标题】:Python3 - extract lines from multiple text filesPython3 - 从多个文本文件中提取行
【发布时间】:2026-01-17 18:25:01
【问题描述】:

谁能检查一下这个脚本有什么问题。可以像我一样使用“for循环”吗?我有多个测量文件(1.cnv、2.cnv 等),我想从中提取以“span 1 =”和“cast”开头的行,之后我想将所有这些行放在一个摘要中。 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")

【问题讨论】:

  • 请检查更新问题中的代码,cmets 不适用于大量代码
  • 谢谢,但我的问题中的代码不起作用。

标签: python file text append extract


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】: