I am trying to write a very simple script that would simulate a pocket secretary for my homework, but I have a small issue. I want all my data to be saved in a file (abstract form) each time I exit the program and then when i boot it up I want to read that file, eval(stack) (basically load the data into memory) then verify if it's valid ... anything that isn't is deleted. This is what I've done:
def loadToString (stack):
f = open ("data.txt", "w")
load_stack = str(stack) #convert to string
f.write (load_stack) #write in file
f.close()
def loadFromString ():
f = open ("data.txt", "r")
load_stack = f.readline() #read string
if (load_stack == "" or load_stack == " " or load_stack == None):
stack = []
return stack
else:
stack = eval(load_stack) #trying to convert from string to list
f.close ()
My problem is when I look into the file ... it's not really a string because it lacks the apostrophes <"> thus when I try to "eval (stack)" something goes wrong and my "memory" ends up being empty (when I try to print the stack it's empty -None-)
I cannot for the life of me understand why this is happening. Also I'm ok with a quick fix (artificially adding apostrophes in the .txt file)
I have no idea how to check if a file is empty or if I read an empty line so I'd also appreciate if you could help me with the "if" statement in "loadFromString". About eval () ... like I said this is just homework so I'm not afraid about any malicious intents.