【发布时间】:2021-08-11 23:57:31
【问题描述】:
下面的实现会不会出错?
def ReadFromFile(file_name):
return [line for line in open(file_name)]
def AppendToFile(new_line, file_name):
open(file_name, 'a').write(new_line)
在读取/写入文件后,我没有显式调用close() 方法。我的理解是,从语义上讲,程序必须表现得好像文件总是在每个函数结束时关闭一样。
这些函数的以下使用是否会产生意想不到的结果,例如
original_lines = ReadFromFile("file.txt")
for line in original_lines:
AppendToFile(line, "file.txt")
modified_lines = ReadFromFile("file.txt")
我希望例如len(modified_lines) == len(original_lines) * 2。不能这样吗?
【问题讨论】:
-
你为什么不使用
with open(...)?这将确保文件已关闭。 -
@balderman 需要额外的标识块,代码变得稍微不太可读 IMO
-
不要为了简洁而牺牲正确性……!?额外的块明确说明了文件何时以及如何打开和关闭……
-
@deceze 所以我的问题是:我是否正在牺牲正确性?有什么可能出错的情况吗?
标签: python python-3.x file file-io