2017-02-08 8 views
1

Я попытался следующие:Python .txt редактирование пошло не так, текст пошел

def überschreiben(filename,vp, capital): 
    data_in=open(filename,"w") 
    data_out=open(filename) 
    vpsegment=False 
    for line in data_out: 
    if "\thistory" in line: 
     data_in.write(line+'\n\t\tvictory_points = { '+capital+' '+vp+' }\n') 
    if "\t\tvictory_points" in line: 
     vpsegment=True 

    if vpsegment==True: 
     if "}" in line: 
      data_in.write("") 
      vpsegment=False 
     else: 
      data_in.write("") 
    else: 
     data_in.write(line) 
    data_in.close() 
    data_out.close() 

Он должен изменить существующий код:

  1. Если история параметр упоминалось, линии должны быть добавлены.

  2. Если victory_points параметров упоминается, линии должны быть удалены, но это может произойти в следующих двух формах:

victory_points={xxxxx x}

или

 victory_points = { 
     9648 5 
     } 

Я думаю, алгоритм правильный, но в итоге я получаю пустой .txt

Какая ошибка?

ответ

0

Сначала вы открываете файл как «w». «w» - это режим записи, который создает новый пустой файл для записи.

Вы должны открыть входной файл как «r» для чтения и открыть второй файл с другим именем файла для вывода. Что-то вроде этого:

data_in=open(filename, "r") 
data_out=open(filename+"_output", "w") 

Если файл должен иметь такое же имя, вы можете использовать os.remove() и os.rename(), чтобы удалить старый файл и переименовать новый с тем же именем, Старый. В конце сценария:

data_in.close() 
data_out.close() 

os.remove(filename) 
os.rename(filename+"_output",filename) 
+0

Спасибо, но что, если имя файла должно быть одинаковым из-за причин обработки? –

+0

@ThorePingpank вы можете использовать os.remove() и os.rename(), чтобы удалить старый файл и переименовать новый. Я отредактировал свой ответ, чтобы это отразить. – fgalvao