Как скопировать строки из нескольких файлов базы на условиях в python?

Я кодирую небольшой скрипт python для захвата строк из нескольких файлов в соответствии с конфигурационным файлом.

Файл конфигурации выглядит так:

[BeginObjects] apple banana [EndObjects] [BeginFiles] path/fileA path/fileB [EndFiles] 

Каждый из других файлов выглядит следующим образом:

 some lines ObjectAlias apple some lines Begin some lines End some lines ObjectAlias pear some lines Begin some lines End more object sections 

Я хочу скопировать строки из вышеуказанного файла в новый файл следующим образом:

 ObjectAlias apple some lines Begin some lines End 

Текущий код:

 def getObjects (fileObj):#get object list from config file fileObj.seek(0) objList = [] Tag = False for line in fileObj: if line.find("[BeginObjects]") != -1: Tag = True elif line.find("[EndObjects]") != -1: Tag = False elif Tag: objList.append(line.strip()) return (objList) def getFiles (fileObj):#get file list form config file fileObj.seek(0) fileList = [] Tag = False for line in fileObj: if line.find("[BeginFiles]") != -1: Tag = True elif line.find("[EndFiles]") != -1: Tag = False elif Tag: fileList.append(line.strip()) return (fileList) def dummyRigs (fileObj, itemObj):# dummy = "" Tag = False for file in fileObj: with open(file, "r") as infile: for line in infile: for item in itemObj: if line.find("ObjectAlias " + item + "\n") !=-1: Tag = True dummy += line elif line.find("End") != -1: Tag = False dummy += line elif Tag: dummy += line return (dummy) 

Я использую первые две функции, чтобы получить список файлов и список объектов из файла конфигурации, а затем поместить их в третью функцию для копирования строк из файлов, но она не работает должным образом: я получаю два списка из первых двух функций без проблемы, третья функция не только дает строки, которые я хочу, но и удваиваю каждую строку и много строк «Конец» (мой шаблон в третьей функции). Выглядит так:

 ObjectAlias apple ObjectAlias apple line12345 line12345 more line6789 more line6789 End End End 

Любые подсказки приветствуются.

2 Solutions collect form web for “Как скопировать строки из нескольких файлов базы на условиях в python?”

Самый простой способ проверить это, if ... in ... , вот так:

 if "[BeginObjects]" in line: print "We found the string '[BringObjects]'" 
 Tag = False for line in infile: for item in itemObj: if line.find("ObjectAlias " + item + "\n") !=-1: Tag = True if Tag: dummy += line if line.find("End") != -1: Tag = False 

Вам просто нужно изменить оператор if

Interesting Posts

Ошибка Django: нет FlatPage соответствует заданному запросу

сбор ошибка. AttributeError: объект 'module' не имеет атрибута 'init'

TypeError: строковые индексы должны быть целыми, а не str // работать с dict

Невозможно выполнить несколько процессов: экземпляр IOLoop уже инициализирован. Вы не можете вызвать IOLoop.instance () перед вызовом start_processes ()

Как решить «Ошибка приложения» в Heroku (Python)

C ++ – привязка Python с помощью ctypes – возврат нескольких значений в функцию

Ошибка при установке и запуске pywin32 2.7

matplotlib заштриховал fill_between без краев?

Как удалить пробелы из строки в Python?

Скриншот окна с использованием python

Двойная параметризация

Когда оператор `==` не эквивалентен оператору `is`? (Python)

SQLAlchemy: Знание имен полей и значений объекта модели?

Pandas множественный индексный фрейм: создание нового индекса или добавление к существующему индексу

Ошибка Scipy: размер numpy.dtype изменен, может указывать двоичную несовместимость (и связанное с ней странное поведение)

Python - лучший язык программирования в мире.