0

I'm reading Zed Shaw's Python book, right now i'm trying to go further in exercise 16 by adjusting it a little:

from sys import argv

script, filename = argv

print "We're going to erase %r." % filename
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."

raw_input("?")

print "Opening the file..."
target = open(filename, 'r+')
print "Displaying the file contents:"
print target.read()

print "Truncating the file. Goodbye!"
target.truncate()

print "Now i'm going to ask you for three lines."

line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")

print "I'm going to write these to the file."

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print "And finally, we close it."
target.close()

Note that i'm using 'r+' instead 'w' because i want to read and write in the exercise, but something is happening: target.truncate() doesn´t work, the information in the file persist. Why is the program proceeding in this way?

Thank you for your time.

P.S. I'm from Colombia, english isn't my native language, so please excuse my errors.

  • Also, LPTHW is pretty bad, look at http://sopython.com/wiki/What_tutorial_should_I_read%3F – tzaman Sep 28 '15 at 21:11
  • Honestly: anything that's still teaching python2 should be treated the same way you'd view a Current Events class that didn't cover anything past the year 2000. Note also: I've been using Python in 90% of my code for the past 5 years and have ***never*** used `file.truncate` (I actually had to look it up in the docs to see if it was even still a *thing*) – Adam Smith Sep 28 '15 at 21:12

1 Answers1

0

truncate defaults to truncating the file at the current position, which after a read call will be at the end of the file. If you want to clear the entire file, use truncate(0).

tzaman
  • 46,925
  • 11
  • 90
  • 115