在线文档教程

posixfile

posixfile - 带锁定支持的文件类对象

自1.5版弃用:该模块提供的锁定操作通过fcntl.lockf()调用完成并更加便携。

该模块通过内置文件对象实现一些附加功能。 特别是,它实现了文件锁定,对文件标志的控制以及复制文件对象的简单界面。 该模块定义了一个新的文件对象,即posixfile对象。 它具有所有标准的文件对象方法,并增加了下面描述的方法。 这个模块只适用于某些Unix版本,因为它使用fcntl.fcntl()来进行文件锁定。

要实例化一个posixfile对象,请使用该posixfile.open()函数。生成的对象外观和感觉与标准文件对象大致相同。

posixfile模块定义了以下常量:

posixfile.SEEK_SET

偏移量是从文件开始计算的。

posixfile.SEEK_CUR

偏移量是从文件中的当前位置计算得出的。

posixfile.SEEK_END

偏移量是从文件末尾计算得出的。

posixfile模块定义了以下功能:

posixfile.open(filename[, mode[, bufsize]])

用给定的文件名模式创建一个新的posixfile对象。该文件名模式BUFSIZE参数解释同样的方式,通过内置的open()功能。

posixfile.fileopen(fileobject)

用给定的标准文件对象创建一个新的posixfile对象。生成的对象与原始文件对象具有相同的文件名和模式。

posixfile对象定义了以下附加方法:

posixfile.lock(fmt[, len[, start[, whence]]])

锁定文件对象所指向的文件的指定部分。 格式在下面的表格中解释。 len参数指定了应该锁定的部分的长度。 默认值为0. start指定该部分的起始偏移量,其中默认值为0. whence参数指定偏移量相对于的位置。 它接受常量SEEK_SET,SEEK_CUR或SEEK_END之一。 缺省值是SEEK_SET。 有关参数的更多信息,请参阅系统上的fcntl(2)手册页。

posixfile.flags([flags])

为文件对象所引用的文件设置指定的标志。 除非另有说明,否则新标志与旧标志进行或运算。 格式在下面的表格中解释。 如果没有flags参数,则返回指示当前标志的字符串(这与?修饰符相同)。 有关标志的更多信息,请参阅系统上的fcntl(2)手册页。

posixfile.dup()

复制文件对象和基础文件指针和文件描述符。结果对象的行为就像是新打开的一样。

posixfile.dup2(fd)

复制文件对象和基础文件指针和文件描述符。新对象将具有给定的文件描述符。否则,结果对象的行为就好像它是新打开的一样。

posixfile.file()

返回posixfile对象所基于的标准文件对象。对于坚持标准文件对象的函数,这有时是必需的。

请求失败时,所有方法都会引发IOError。

lock()方法的格式字符具有以下含义:

格式含义
u解锁指定的区域
r请求指定部分的读取锁定
w请求指定部分的写入锁定

另外,可以将以下修饰符添加到格式中:

变化含义笔记
|等到锁已被授予
?返回与请求的锁冲突的第一个锁,或者如果没有冲突,则返回None。(1)

注意:

  • 返回的锁是格式(mode,len,start,whence,pid),其中mode是表示锁的类型('r'或'w')的字符。 此修饰符可防止授予请求; 它仅用于查询目的。flags()方法的格式字符具有以下含义:格式化仅在exec flagnno延迟标志(也称为非阻塞标志)上使用flagcclose ssynchronization标志另外,可以将以下修饰符添加到格式中:ModifierMeaningNotes !将指定的标志'off',而不是默认的'on'(1)=替换标志,而不是缺省的'OR'操作(1)?返回一个字符串,其中的字符代表设置的标志。(2)注:

  • !=修饰符是互斥的。

  • 该字符串表示可能已被相同的调用改变后的标志。

例子:

import posixfile file = posixfile.open('testfile', 'w') file.lock('w|') ... file.lock('u') file.close()