The mode "a" opens a file for appending: writes land at the end, and the existing content stays:
with open("log.txt", "w") as file:
file.write("started\n")
with open("log.txt", "a") as file:
file.write("saved\n")
with open("log.txt") as file:
print(file.read())
Output:
started
saved
Had the second open used "w", the file would contain only saved — "w" empties, "a" extends. Like "w", "a" creates the file when it does not exist.
Appending suits logs and records: each run of the program adds to the history instead of overwriting it.
log_event with two parameters: path and event.path: the event text followed by a newline. Earlier lines must survive.After log_event("log.txt", "login") and log_event("log.txt", "logout"), the file contains both lines in order.
Run your code to see the output, then press Submit.
import os
import unittest
class TestLogEvent(unittest.TestCase):
def setUp(self):
if os.path.exists("test_log.txt"):
os.remove("test_log.txt")
def test_two_events_appear_in_order(self):
log_event("test_log.txt", "login")
log_event("test_log.txt", "logout")
with open("test_log.txt") as file:
self.assertEqual(file.read(), "login\nlogout\n")
def test_existing_content_survives(self):
with open("test_log.txt", "w") as file:
file.write("boot\n")
log_event("test_log.txt", "login")
with open("test_log.txt") as file:
self.assertEqual(file.read(), "boot\nlogin\n")
def log_event(path, event):
with open(path, "a") as file:
file.write(event + "\n")
log_event("log.txt", "login")
log_event("log.txt", "logout")
with open("log.txt") as file:
print(file.read())
Sign in to join the discussion.
No comments yet. Be the first to ask a question.
Press Run to execute your code, or Submit to test and complete this problem.