为了缩短代码,我使用了类似的东西:
data = open(file).read()
由于data.close()
它是一个字符串,因此无法关闭data
,所以我问一个问题:如果在读取该行后,文件是否仍然打开?我是否需要费心去关闭它?
答案 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()
希望我能帮到你