python with statement indentation

时间:2017-09-21 16:43:05

标签: python with-statement

我经常打开文件只是为了阅读文本,并对文本进行一些分析,如下例所示。

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)

所以我很好奇是否有某些原因或标准已经完成,或者我没有注意到这会导致一些副作用。

5 个答案:

答案 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之后,它现在在程序中有一个范围,就像普通的对象/变量一样。