在python中显式关闭文件

时间:2015-03-26 14:38:37

标签: python

以艰难的方式学习Python。示例17打开一个文件,复制它,然后关闭它。其中一项研究是尽可能简化程序。但是,当我简化它时,似乎没有任何文件要关闭。我想用一个班轮理解的是,如果有的话,需要关闭。

例如 -

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

这可以简化为

indata = open(from_file).read()

我理解打开文件后关闭文件是个好习惯,但indata和from_file都是字符串。从更多的挖掘中,我理解这是unpythonic,应该在2行中为了可读性而完成,这将导致文件描述符。但是这里没有打开文件描述符来关闭。我错过了什么?我应该有一个明确关闭的文件描述符吗?

2 个答案:

答案 0 :(得分:1)

而不是这样做

indata = open(from_file).read()

您应该尝试使用with关键字

with open(from_file) as f: indata = f.read()

在前者中,您仍然拥有文件描述符,即使您没有任何引用,也无法保证文件何时关闭。在第二种方法中,一旦完成语句执行,文件就会被关闭。

答案 1 :(得分:0)

原因是indata没有引用文件对象。

它指的是方法read()返回的数据,因此当您尝试在该数据上调用close()时,它将无效。

您需要对open()read()保持单独的引用,或者使用内置的with()内容。