打开(文件).read()命令后文本文件是否仍然打开?

时间:2016-05-29 10:35:18

标签: python python-2.7 pycharm

为了缩短代码,我使用了类似的东西:

data = open(file).read() 

由于data.close()它是一个字符串,因此无法关闭data,所以我问一个问题:如果在读取该行后,文件是否仍然打开?我是否需要费心去关闭它?

3 个答案:

答案 0 :(得分:3)

收集垃圾时会关闭(可能会看到评论);然而,处理它的最简洁方法是with块:

with open(file, "r") as datafile:
    data = datafile.read()

如果这个过程是短暂的,它不应该造成太多麻烦,但是一旦不需要就释放句柄是个好习惯。

答案 1 :(得分:3)

在CPython中,open(file)的结果在.read()完成后没有引用,如果没有异常,那么它将立即被垃圾收集,这将导致它关闭。

但不要这样做。提供便利功能:

def read_file(path):
    with open(path) as f:
        return f.read()

data = read_file(path)

也不要担心保存一行代码。这种态度会导致错误的代码。

答案 2 :(得分:0)

是的,它会保持开放状态,我打开这样的数据:

func LINQKey(key: String) -> (AnyObject! -> AnyObject!) {
    return { (item: AnyObject!) in
        return item.valueForKey(key)
    }
}

with open("file","rb") as f:
       data=f.readlines()

希望我能帮到你