我经常打开文件只是为了阅读文本,并对文本进行一些分析,如下例所示。
with open('foo/bar.txt') as f:
text = f.read()
good_stuff = analyze(text)
我的问题是,good_stuff
行是否需要缩进?据我所知,with
块存在以自动化构建和拆除某些进程。如果这就是全部,那么一旦我有了text
变量,我就会很好,不再需要在with
块中,对吗?
如果我有很多周围的代码,这可能导致大的缩进,这可能相当烦人。我试过没有缩进,似乎有效,但我从未见过有人写过
with open('foo/bar.txt') as f:
text = f.read()
good_stuff = analyze(text)
所以我很好奇是否有某些原因或标准已经完成,或者我没有注意到这会导致一些副作用。
答案 0 :(得分:4)
第二种方法实际上更好。完成文件后,应立即退出with
块。阅读后无需保持文件打开。
答案 1 :(得分:4)
采用这种方法:
with open('foo/bar.txt') as f:
text = f.read()
good_stuff = analyze(text)
您打开文件,将整个内容读入一个名为text的变量,您已关闭文件然后分析了文本。
这没关系,但是如果你得到一个非常大的文件呢?在这种情况下,我认为你不能采用这种方法
with open('foo/bar.txt') as f:
for line in f:
good_stuff = analyze(line)
如果您有一个大文件,这就是我建议您阅读文件的方式。
答案 2 :(得分:0)
如果您希望analyze(text)
打开文件,请将其缩进,否则稍后会更好。
答案 3 :(得分:0)
with函数用于在打开的文件上应用退出方法,以便安全关闭文件。但是一旦你把文件的内容读到变量" text"没有规则让它在"下用"块。
答案 4 :(得分:0)
是的,没有必要在缩进块中放置good_stuff
,因为在执行text
之后,它现在在程序中有一个范围,就像普通的对象/变量一样。