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()