-3
from sys import argv
from os.path import exists

script, from_file, to_file = argv
print "Copying fro %s to %s" % (from_file, to_file)


in_file = open(from_file)
indata = in_file.read()

print "The input file is %d bytes long" % len(indata)

print "Does the output file exist? %r" % exists(to_file)
print "Ready, hit RETURN to countinue, CRL-C to abort."
raw_input("?")

out_file = open(to_file, 'w')
out_file.write(indata)

print "Alright, all done."

out_file.close()
in_file.close()

Is it necessary to write out_file.close() and in_file.close() ?

If I do not write these last two lines, still works. And what is the difference between to close both (out_file, and in_file)?

Guillaume Jacquenot
  • 11,217
  • 6
  • 43
  • 49
Infinite
  • 15
  • 3
  • 1
    Why are seatbelts important in cars with airbags? Mostly, they aren't -- but you don't want to be in a car without one in one of those rare cases when it makes a difference. – John Coleman Dec 22 '16 at 14:43
  • 3
    Anyway, always access files by `with`. – Right leg Dec 22 '16 at 14:50
  • You should always close files because it's possible some of the IO buffers may not get flushed (depending on the language) and you may end up with missing data. – Levon Dec 22 '16 at 15:07

1 Answers1

5

By not closing files you are possibly wasting system resources. Also, other processes that want to access the file after your code was executed might not be able to do so due to still being opened by your code.

slaat
  • 233
  • 1
  • 8