使用Python搜索文件行

时间:2019-02-25 18:10:24

标签: python json

我正在编写一些代码来读取文件并分配某些行以将其移至另一个文件。

我需要它读取直到找到ID,然后通读直到找到属性或到达ID的末尾为止。我用了一段时间没有在线功能。我正在测试的ID只有一个具有属性名称的孩子。但是整个文件有四个。我希望它仅使用该特定ID的子对象,但它会一直贯穿文件并使用所有四个实例。我该怎么做,以使其在到达ID末尾后实际上停止。我将在底部使用示例文本。

import os
import json
import shutil
import re
d='.'
folders = list(filter (lambda x: os.path.isdir(os.path.join(d, x)), 
os.listdir(d)))
print("Folders found: ")
print(folders)



def processModelFolder(inFolder):

          fileName = os.path.join(d, inFolder, inFolder + ".mdl")
          fileNameTwo = os.path.join(d, inFolder, inFolder + ".vg2.json")
          fileNameThree = os.path.join(d, inFolder, inFolder + "APPENDED.vg2.json")

          shutil.copyfile(fileNameTwo, fileNameThree)

          mdl = open(fileName , "r")
          json = open(fileNameTwo , "r")
          jsonCopy = open(fileNameThree , "r+")

          IDs = ["6ff0010c-00fe-485b-b695-4ddd6aca4dcd"]
          Properties = ["IDCO_DYNAMIC_SIMULATION_RESULTS_VISUALIZATION_RESPONSE_ANIMATION_TIME[0]"]

          for i in IDs:
              for line in mdl:
                  if i in line:
                      ID = i
                      print(ID)
                      while "[/" not in line:
                          for y in Properties:
                              for line in mdl:
                                  if y in line:
                                      name = y
                                      print(name)









for modelFolder in folders:   
        processModelFolder(modelFolder)

mdl文件的子集:

[IDCO_CALCOBJECT_DATA]     

IDCO_IDENTIFICATION = "6ff0010c-00fe-485b-b695-4ddd6aca4dcd"

IDCO_DESIGNATION = "Stirnradgetriebe"

[IDSCO_CALCULATION]

IDCO_DYNAMIC_SIMULATION_RESULTS_VISUALIZATION_RESPONSE_ANIMATION_TIME[0] = 2.0

[/IDO_SYSTEM_LOADCASE] [0]

1 个答案:

答案 0 :(得分:-1)

我认为您应该使用线程模型,即多线程 Python 应用程序。 一个线程读取文件,并且在找到符合条件的行时将其放入队列中。 让另一个工作线程将其拾取并处理子进程。