2015-01-30 4 views
0

Я новичок в Python. Мне нужно создать файл door.lock, который содержит текущую дату и время. Кроме того, я должен перезаписать этот файл каждые x минут новым файлом, содержащим текущую дату и время. Я использую это как файл блокировки псевдоданных, чтобы позволить мне протестировать при запуске программного обеспечения независимо от того, произошло ли сбой программного обеспечения и как долго он разбился. Моя проблема в том, что я не могу перезаписать файл. Я не смог создать и/или добавить файл. В качестве теста я создал следующее:Python перезаписывает файл, содержащий текущую дату и время

from datetime import datetime, timedelta 

    ending = False 

    LOCK_FILENAME = "door.lock" # The lock file 
    LOCK_FILE_UPDATE = True 
    MINS_LOCK_FILE_UPDATE = 1 # the (x) time in minutes to write to lock file 
    NEXT_LOCK_FILE_UPDATE = datetime.now() 

    lock_file = open(LOCK_FILENAME, "w") 
    now = datetime.now() 
    NOW_STRING1 = str(now.strftime("%Y-%m-%d_%a_%H:%M")) 
    lock_file.write(NOW_STRING1) 
    print "First Now String" 
    print NOW_STRING1 

    # ============================================================================== 
    #Main Loop: 
    while ending is False: 

    # ============================================================================== 
     # Check if it is time to do a LOCK FILE time update 
     now = datetime.now() 
     NOW_STRING1 = str(now.strftime("%Y-%m-%d_%a_%H:%M")) 
     if LOCK_FILE_UPDATE: # if LOCK_FILE_UPDATE is set to True in DM settings 
     if NEXT_LOCK_FILE_UPDATE <= datetime.now(): 
      lock_file.write(NOW_STRING1) 
      print NOW_STRING1 
      NEXT_LOCK_FILE_UPDATE = datetime.now() + timedelta(minutes=MINS_LOCK_FILE_UPDATE) 

Будет ли кто-то определять мои ошибки для меня? TIA

Когда я кот над файлом, door.lock, он пуст.

+1

Вы должны закрыть файл или он не будет писать на нем –

ответ

1

Вам нужно нажать буфер в файл. Вы можете сделать это с помощью close() и повторно открыть для следующей записи.

lock_file.close() 
... 
lock_file = open(LOCK_FILENAME, "a") 
+0

я изменил «а» до «ж», и это работает для меня. – user72055

+0

Используя «a», вы создадите файл журнала, но если вам нужен только тег, «w» в порядке. – MAC

0

Если вы регистрируете события вы бы лучше с помощью logger вместо простого текстового файла.

Решение от @MAC будет работать, за исключением того, что оно будет добавляться и кажется, что вы не хотите этого делать, чтобы просто открыть снова с помощью опции «w» или, еще лучше, используйте параметр «w +», чтобы он мог быть усечен (что для того, что я получаю, это то, что вы хотите сделать) и читать.

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

lock_file = open(LOCK_FILENAME, "w+") 
now = datetime.now() 
NOW_STRING1 = str(now.strftime("%Y-%m-%d_%a_%H:%M")) 
lock_file.write(NOW_STRING1) 
# your loop and so on ... 
lock_file.close() 
Смежные вопросы