Python文件Slurp

是否有一行可以读取Python中文件的所有行,而不是标准:

f = open('x.txt') cts = f.read() f.close() 

似乎这样做经常发生,所以必须有一个单线。 有任何想法吗?

这将在Python 2.6 1及更高版本中将内容转化为单个string:

 with open('x.txt') as x: f = x.read() 

这将创build一个行列表:

 with open('x.txt') as x: f = x.readlines() 

这些方法保证了在阅读之后立即closuresinput文件。

脚注:

  1. 这种方法也可以在Python 2.5中使用, from __future__ import with_statement

不能保证立即closures的老方法是使用这个来创build一个string:

 f = open('x.txt').read() 

而这个创build一个行列表:

 f = open('x.txt').readlines() 

在实践中,它将在CPython的某些版本中立即被closures,但是在Jython,IronPython以及可能未来版本的CPython中“只有当垃圾回收器接近它”时才会closures。

如果您使用的是Python3,请确保您正确地遵守文件的input编码,例如:

 import codecs with codecs.open(filename, 'r', encoding="utf8") as file: cts = file.read() 

findPython3编解码器列表中的编解码器名称列表 。 (只要你期望任何非ASCIIinput,这个机制对Python2也是可取的)