2015-02-11 2 views
0

У меня просто небольшие проблемы с текстовыми файлами и как я буду писать новую строку, чтобы создавать список каждый раз, когда вызывается функция.Запись в новую строку каждый раз, когда функция повторяется?

if speedCarMph > 60: 
     f = open('Camera Output.txt', 'r+') 
     f.write("{} was travelling at {}MPH at {} and has broken the law".format(licensePlate, speedCarMph, camInput2) + "\n") 
     f.write("-----------------------------------------------------------------------------------------------------------") 
     f.close() 
     DeltaTimeGen() 
    else: 
     DeltaTimeGen() 

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

+1

Я думаю, вы хотите 'open (..., 'a')' –

+0

Также похоже, что вы можете переместить 'DeltaTimeGen()' вне if-блока, поскольку этот статус вызывается в любом случае. – Paul

ответ

0

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

bufsize = 0 
f = open('Camera Output.txt', 'r+', bufsize) 

if speedCarMph > 60: 
     f.write("{} was travelling at {}MPH at {} and has broken the law".format(licensePlate, speedCarMph, camInput2) + "\n") 
     f.write("-----------------------------------------------------------------------------------------------------------\n") 
     DeltaTimeGen() 
    else: 
     DeltaTimeGen() 

f.close() 
1

Использование a для добавления, если у вас есть цикл, вы должны также открыть файл за его пределами:

with open('Camera Output.txt', 'a') as f: # with closes your file 
    if speedCarMph > 60:    
      f.write("{} was travelling at {}MPH at {} and has broken the law".format(licensePlate, speedCarMph, camInput2) + "\n") 
      f.write("-----------------------------------------------------------------------------------------------------------\n") 
    DeltaTimeGen() # if/else is redundant 

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

Если функция повторно вызывает себя, вам может быть лучше использовать цикл while.

with open('Camera Output.txt', 'a') as f: 
    while True: 
     # rest of code 
     if speedCarMph > 60: 
       f.write("{} was travelling at {}MPH at {} and has broken the law".format(licensePlate, speedCarMph, camInput2) + "\n") 
       f.write("-----------------------------------------------------------------------------------------------------------") 

Возможно добавление time.sleep между чеками.

+0

В настоящее время я получаю проблему, в которой ничего не записано в текстовом файле? – TooLateTheHero

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