python - 逐行循环而不是覆盖时写入文件
问题描述
我正在尝试使用以下代码每秒在文件中写入一些内容:
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)
解决方案
以附加模式打开文件以避免覆盖: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)
推荐阅读
- python - 几秒钟前如何创建音频缓冲区以访问麦克风输入
- python - 你可以在python中同时运行多个条件吗?
- exception - OCaml 中的多态异常参数
- python - 如何编写仅采用正整数的最大公分母函数?(Python)
- r - 如何离散化R中的多列
- docker - 遵循 docker 教程,但教程和实际输出不同
- node.js - AWS Elastic Beanstalk - 找不到模块“hapi”
- python - Python,在循环中检测 id 和 name
- java - 我被要求使用 * 来打印“DJE”。结果不正常。我该如何解决?
- python - 使用 pyspark 过滤数组中基于 RDD 的值