from sys import argv
from os.path import exists
script, from_file, to_file = argv
print "Copying from %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)
#above is the original code.
他关闭了上面的文件。但是,在共同的学生问题中,就是这样。
Q值。当我尝试缩短此脚本时,我在最后关闭文件时会出错。
一个。你可能做了类似这样的事情,indata = open(from_file).read(),这意味着你到达脚本末尾时不需要执行in_file.close()。一旦一行运行,它应该已经被Python关闭。
那么,你怎么知道何时关闭文件以及何时不关闭?
谢谢大家,我明白了! :)
答案 0 :(得分:3)
在处理文件对象时,最好使用with关键字。这样做的好处是文件在其套件之后正确关闭 完成,即使在途中引发异常。它也比编写等效的try-finally块短得多:
>>> with open('workfile', 'r') as f:
... read_data = f.read()
>>> f.closed
True
答案 1 :(得分:0)
何时关闭文件?永远 - 一旦你完成了它。否则它只会占用记忆力。