首页 > 解决方案 > 逐行循环而不是覆盖时写入文件

问题描述

我正在尝试使用以下代码每秒在文件中写入一些内容:

from datetime import datetime
import schedule
import time

def test():
    f = open(r"C:\logs.txt","w")
    time = datetime.now()
    f.write("test " + str(time))
    f.write("\n")

schedule.every().second.do(test)

while True:
    schedule.run_pending()
    time.sleep(1)
        

但是当我查看 logs.txt 文件时,结果是这样的:

test 2020-08-08 21:10:52.605432

而不是(我想做的):

test 2020-08-08 21:10:52.605432
test 2020-08-08 21:10:53.605432
test 2020-08-08 21:10:54.605432
...

每次有新的第二行时,代码似乎都会覆盖第一行而不是逐行写入。你可以帮帮我吗 ?谢谢

更新代码:

from datetime import datetime
import schedule
import time

def test():
    f = open(r"C:\logs.txt","a")
    time = datetime.now()
    f.write("test " + str(time))
    f.write("\n")
    f.close()
    

while True:

    schedule.every().second.do(test) 
    schedule.run_pending()
    time.sleep(1)

标签: pythondatetimetimefile-io

解决方案


以附加模式打开文件以避免覆盖:open(r"C:\logs.txt","a"). 另外,我建议with在你写完之后使用一个语句来自动关闭文件。

示例代码:

from datetime import datetime
import schedule
import time

def test():
    with open(r"C:\logs.txt","a") as f:
        time = datetime.now()
        f.write("test " + str(time))
        f.write("\n")

schedule.every().second.do(test)

while True:
    schedule.run_pending()
    time.sleep(1)

推荐阅读