Reputation:
I'm trying to write something in a file every second with the following code:
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)
But when I'm looking at the logs.txt file, the result is this :
test 2020-08-08 21:10:52.605432
instead of (what I would like to do):
test 2020-08-08 21:10:52.605432
test 2020-08-08 21:10:53.605432
test 2020-08-08 21:10:54.605432
...
The code seems to overwrite the first line instead of writing line by line every time there is a new second. Could you help me ? Thanks
Updated code:
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)
Upvotes: 0
Views: 124
Reputation: 5407
Open your file in appending mode to avoid overwriting: open(r"C:\logs.txt","a")
. Additionally, I suggest using a with
statement to close the file automatically after you have finished writing.
Example Code:
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)
Upvotes: 3