Python覆盖包含当前日期和时间的文件

2024-05-03 14:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不熟悉。我需要创建一个门锁包含当前日期和时间的文件。另外,我需要每隔x分钟用一个包含当前日期和时间的新文件覆盖这个文件。我把它作为一个伪锁文件来使用,以便在软件运行时测试软件是否崩溃以及崩溃的时间。我的问题是我似乎无法覆盖文件。我只是在创建和/或附加文件时失败。我创建了以下内容作为测试:

    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)

有人能帮我指出我的错误吗?短暂性脑缺血发作

当我搜索上面的文件时,门锁,它是空的。你知道吗


Tags: 文件tolockdatetimeiftime时间update
2条回答

您需要将缓冲区推送到文件。您可以使用close()进行操作,然后重新打开以进行下一次写入。你知道吗

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

如果要记录事件,最好使用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()

相关问题 更多 >