2016-05-13 5 views
-1

Я уложил в свой код, я хочу, чтобы из этого кода можно было открыть файл, который уже существует с огромным текстом (inputt), прочитать его и если строка содержит «***», тогда скопируйте строки перед ним и вставьте в другой файл (outputt).Python скопировать все строки перед строкой в ​​другом текстовом файле

Мой файл inputt для примера выглядит следующим образом:

This is the house 

this is the flower 

this is a tree 

'***' 

This is a car 

this is an apple 

this is the nature 

'***' 

Так что моя цель состоит в том, чтобы скопировать все строки перед «***» и вставить его в другой файл. Поэтому его можно разделить на два файла. Вот мой уложенный код:

def transform(inputt, outputt): 
    with open(inputt) as f, open(outputt, "w") as f1: 
     count = 0 
     for line in f: 
      if "***" in line: 
       f.writelines(deque(f1, count)) 
      else: 
       count = count + 1 

ответ

0

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

This is the house 

this is the flower 

this is a tree 

Это правильно? Если это так:

def transform(inputt, outputt): 
    with open(inputt) as f, open(outputt, "w") as f1: 
     f1.write(f.read().split("***")[0]) 

Этот код имеет ряд недостатков, но без лучшего описания трудно действительно знать, что вы после этого.

Edit: Учитывая ответ в комментариях:

def transform(inputt, outputt_base): 
    with open(inputt, "r") as f: 
     for count, block in enumerate(f.read().split("***")): 
      outputt_name = outputt_base + "_{0}.txt".format(count) 
      with open(outputt_name, "w") as f1: 
       f1.write(block) 

Учитывая ваш пример входного файла, это будет написать два выходных файла: (предполагая, что outputt_base просто строка output)

Первый файл : output_1.txt

This is the house 

this is the flower 

this is a tree 

и

Второй файл: output_2.txt

This is a car 

this is an apple 

this is the nature 
+0

Это верно! Извините за плохое объяснение. Но мне нужно, чтобы каждый «блок» помещался в другой текстовый файл. Потому что в тексте много больше ***. Таким образом, цикл for должен начинаться и после того, как *** найден, поместите первый файл, после того, как он снова запустит цикл и запишет второй блок в другой файл, пока в текстовом файле не будет ***. Не могли бы вы это понять? Спасибо! – Ukii

+0

Отредактирован ответ с более углубленным кодом. –

+0

Это действительно работает! Спасибо, я написал что-то вроде вашего редактирования, у меня много скриптов, потому что я новичок в python. Спасибо, ты действительно помог мне! – Ukii

Смежные вопросы