file object的属性:
closed # 标记文件是否已经关闭,由 close() 改写encoding # 文件编码mode # 打开模式name # 文件名newlines # 文件中用到的换行模式,是一个 tuplesoftspace # 这是一个布尔值 在使用 print 语句时表示在打印另一个值之前,是否要先打印一个 空白符。若用类来模仿文件操作则必须提供这样一个可写的属性,并将其初始化为 0 。
file所有的方法:
- file()函数用于创建一个file对象,它有一个别名叫open() file( filename[, mode[, bufsize]])
- close()
在Python2.5中,如果使用with语句则可以避免显示调用close()方法from __future__ import with_statementwith open("hello.txt") as f:for line in f:print line当一个错误发生时,在整个块退出时都会自动调用close()方法.旧版本中的Python应该写成如下形式:f = open("hello.txt")try:for line in f:print linefinally:f.close()调用其它一些类文件(file-like)的类型时,可以使用closing()方法:例:通常地写法是这样的:from contextlib import contextmanager@contextmanagerdef closing(thing):try:yield thingfinally:thing.close()换用closing()方法则会这样:from __future__ import with_statementfrom contextlib import closingimport urllibwith closing(urllib.urlopen('http://www.python.org')) as page:for line in page:print lineflush()把缓冲区的内容写入硬盘
-
fileno() 返回一个长整型的”文件标签“
-
isatty() :当这个文件是与一个tty(-like)设备相联则返回true(UNIX系统)
-
next():
一个文件对象就是自己的iterator,例如iter(f)返回的就是f(除非f 是关闭状态的)。当一个文件被当成一个迭代器使用时,代表性的使用方法就是用在for循环中(例如:for line in f:print line),next()方法被重复地调用。这个方法返回下一待读入的行,或者抛出StopIteration当读到了文件尾(EOF)[当一个文件被打开并在被写入时这个行为是未定义的]为了使for循环能最高效地遍历整个文件的行,next()方法使用一个隐藏的read-ahead buffer。注意的问题,因为它使用读先行缓冲区,因为,如果把next()方法同其它文件操作方法(像readline())一起使用将会不能正常工作。虽然如此,使用seek()方法重定位文件到一个确定的位置将会刷新整个read-ahead buffer.
read[size] 读到EOF时返回一个空串 readline([size]) readlines([size]) xreadlines() 这个方法返回的结果跟 iter(f)一样。 现在己经基本被 for line in file 代替for line in f.xreadlines(): # Do something with line ...seek(offset[,whence])tell()
- truncate([size]) 把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
- write(str)
- writelines(sequence) 把一个序列的strings写入到文件中。这个sequence可以是任何iterable object producing strings,较为典型的是一个字符串列表(list of strings),没有返回值。其实不添加换行符,只是名称为了跟readlines()对应
- writelines() does not add line separators