Delete a row from a text file with Python -
i have file each line starts number. user can delete row typing in number of row user delete.
the issue i'm having setting mode opening it. when use a+
, original content still there. however, tacked onto end of file lines want keep. on other hand, when use w+
, entire file deleted. i'm sure there better way opening w+
mode, deleting everything, , re-opening , appending lines.
def deletetodo(self): print "which item want delete?" deleteitem = raw_input(">") #select line number delete print "are sure want delete number" + deleteitem + "(y/n)" verifydelete = str.lower(raw_input(">")) if verifydelete == "y": file = open(todo.filename,"a+") #open file (tried w+ well, entire file deleted) filelines = file.readlines() #read , display lines line in filelines: file.truncate() if line[0:1] != deleteitem: #if number (first character) of current line doesn't equal number deleted, re-write line file.write(line) else: print "nothing deleted"
this typical file may like
1. info here 2. more stuff here 3. more stuff here
def deletetodo(): print ("which item want delete?") deleteitem = raw_input(">") #select line number delete print ("are sure want delete number" + deleteitem + "(y/n)") deleteitem=int(deleteitem) verifydelete = str.lower(raw_input(">")) if verifydelete == "y": file = open('data.txt',"r") #open file (tried w+ well, entire file deleted) lines=[x.strip() x in file if int(x[:x.index('.')])!=deleteitem] #read lines first except line matches line number deleted file.close() file = open('data.txt',"w")#open file again x in lines:file.write(x+'\n') #write data file else: print ("nothing deleted") deletetodo()
Comments
Post a Comment