非常教程

Python参考手册

输入/输出 | Input/ouput

select

该模块提供了访问select()poll()可用的功能在大多数操作系统,epoll()在Linux 2.5+可用,kqueue()适用于大部分BSD。请注意,在Windows上,它只适用于套接字; 在其他操作系统上,它也适用于其他文件类型(特别是在Unix上,它在管道上工作)。它不能用于常规文件,以确定自上次读取文件后文件是否已增长。

该模块定义了以下内容:

exception select.error

发生错误时引发异常。附带的值是一对包含数字错误代码的对errno和相应的字符串,将由C函数打印perror()

select.epoll([sizehint=-1])

(仅在Linux 2.5.44及更新版本上受支持。)返回边缘轮询对象,可用作I / O事件的边缘或层次触发接口; 请参见下面的边缘和级别触发器轮询(epoll)对象部分,了解对象支持的方法。

2.6版本中的新功能。

select.poll()

(不受所有操作系统支持。)返回一个轮询对象,该对象支持注册和取消注册文件描述符,然后轮询它们以查找I / O事件; 有关轮询对象支持的方法,请参见下面的轮询对象部分。

select.kqueue()

(仅在BSD上支持。)返回一个内核队列对象; 有关kqueue对象支持的方法,请参见下面的Kqueue Objects部分。

2.6版本中的新功能。

select.kevent(ident, filter=KQ_FILTER_READ, flags=KQ_EV_ADD, fflags=0, data=0, udata=0)

(仅在BSD上支持。)返回内核事件对象; 有关kevent对象支持的方法,请参见下面的Kevent对象部分。

2.6版本中的新功能。

select.select(rlist, wlist, xlist[, timeout])

这是Unix select()系统调用的直接接口。前三个参数是“可等待对象”的序列:表示文件描述符的整数或带有无参数方法的对象,fileno()返回这样一个整数:

  • rlist:等到准备好阅读
  • wlist:等到准备写作
  • xlist:等待“异常情况”(请参阅​​手册页,了解您的系统考虑的这种情况)

空序列是允许的,但三个空序列的接受是平台相关的。(已知在Unix上工作,但在Windows上工作。)可选的超时参数指定超时为浮点数,以秒为单位。当省略超时参数时,该功能将阻塞,直到至少有一个文件描述符就绪。超时值为零指定轮询并且永不阻止。

返回值是准备好的对象列表的三倍:前三个参数的子集。如果在没有文件描述符准备就绪的情况下达到超时,则返回三个空列表。

间序列中的可接受的对象类型(例如Python的文件对象sys.stdin通过返回,或物体open()os.popen())中,由返回的插座对象socket.socket()。你也可以自己定义一个包装类,只要它有一个合适的fileno()方法(它真的返回一个文件描述符,而不仅仅是一个随机整数)。

注意

Windows上的文件对象不可接受,但套接字是。在Windows上,底层select()函数由WinSock库提供,并且不处理源自WinSock的文件描述符。

select.PIPE_BUF

文件报告准备好写的select()poll()或者在该模块中类似的接口,保证不可达写入块PIPE_BUF字节。这个值由POSIX保证至少为512.可用性:Unix。

New in version 2.7.

1.边缘和水平触发轮询(epoll)对象

http://linux.die.net/man/4/epoll

eventmask

不变

含义

EPOLLIN

可供阅读

EPOLLOUT

可用于写入

EPOLLPRI

用于读取的紧急数据

EPOLLERR

在assoc上发生错误情况。FD

EPOLLHUP

挂起发生在assoc上。FD

EPOLLET

设置Edge Trigger行为,默认是Level Trigger行为

EPOLLONESHOT

设置一次性行为。在一个事件被拉出后,fd在内部被禁用

EPOLLRDNORM

相当于EPOLLIN

EPOLLRDBAND

优先数据带可以被读取。

EPOLLWRNORM

相当于EPOLLOUT

EPOLLWRBAND

可以写入优先数据。

EPOLLMSG

忽略。

epoll.close()

关闭epoll对象的控制文件描述符。

epoll.fileno()

返回控制fd的文件描述符编号。

epoll.fromfd(fd)

从给定的文件描述符创建一个epoll对象。

epoll.register(fd[, eventmask])

用epoll对象注册一个fd描述符。

注意

注册已经注册的文件描述符会引发IOError - 与Polling Objects的注册表相反。

epoll.modify(fd, eventmask)

修改寄存器文件描述符。

epoll.unregister(fd)

从epoll对象中删除已注册的文件描述符。

epoll.poll([timeout=-1[, maxevents=-1]])

等待事件。超时秒数(浮点数)

2.轮询对象

poll()大多数Unix系统支持的系统调用为同时为多个客户提供服务的网络服务器提供了更好的可扩展性。poll()缩放比较好,因为系统调用只需要列出感兴趣的文件描述符,同时select()构建位图,为感兴趣的fds打开位,然后必须再次线性扫描整个位图。select()是O(最高文件描述符),而poll()O(文件描述符的数量)。

poll.register(fd[, eventmask])

使用轮询对象注册文件描述符。未来对该poll()方法的调用将检查文件描述符是否有任何挂起的I / O事件。fd可以是一个整数,也可以是一个带有fileno()返回整数的方法的对象。文件对象实现fileno(),所以它们也可以用作参数。

eventmask是一个可选位掩码描述要检查事件的类型,可以是常量的组合POLLINPOLLPRIPOLLOUT在如下表所述。如果未指定,则使用的默认值将检查所有3种类型的事件。

不变

含义

POLLIN

有数据需要阅读

POLLPRI

有紧急的数据要阅读

POLLOUT

准备输出:写入不会被阻止

POLLERR

某种错误情况

POLLHUP

挂了

POLLNVAL

无效的请求:描述符未打开

注册已经注册的文件描述符并不是错误,并且具有与仅仅注册一次描述符相同的效果。

poll.modify(fd, eventmask)

修改已经注册的fd。这与之相同register(fd, eventmask)。尝试修改从未注册的文件描述符会导致引发IOErrorerrno异常ENOENT

2.6版本中的新功能。

poll.unregister(fd)

删除正在由轮询对象跟踪的文件描述符。就像这个register()方法一样,fd可以是一个整数或一个带有fileno()返回整数的方法的对象。

试图删除从未注册的文件描述符会导致引发KeyError异常。

poll.poll([timeout])

轮询注册文件描述符的集合,并返回包含(fd, event)2元组的可能为空的列表,以便为要报告的事件或错误描述符。fd是文件描述符,事件是一个位掩码,为该描述符的报告事件设置位 - POLLIN用于等待输入,POLLOUT指示描述符可以写入,等等。一个空列表表示该呼叫超时,并且没有文件描述符有任何要报告的事件。如果给出超时,它指定系统在返回之前等待事件的时间长度(以毫秒为单位)。如果超时被忽略,否定,或者None,该调用将被阻塞,直到该轮询对象发生事件。

3. Kqueue对象

kqueue.close()

关闭kqueue对象的控制文件描述符。

kqueue.fileno()

返回控制fd的文件描述符编号。

kqueue.fromfd(fd)

从给定的文件描述符创建一个kqueue对象。

kqueue.control(changelist, max_events[, timeout=None]) → eventlist

Low level interface to kevent

  • changelist必须是kevent对象或者可迭代的对象 None
  • max_events必须是0或正整数
  • 以秒为单位的超时时间

4. Kevent对象

https://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2

kevent.ident

用于识别事件的值。解释取决于过滤器,但通常是文件描述符。在构造函数中,ident可以是int或具有fileno()函数的对象。kevent在内部存储整数。

kevent.filter

内核过滤器的名称。

不变

含义

KQ_FILTER_READ

获取描述符并在有数据可读时返回

KQ_FILTER_WRITE

获取描述符并在有可用数据写入时返回

KQ_FILTER_AIO

AIO请求

KQ_FILTER_VNODE

在fflag中观看一个或多个请求的事件时返回

KQ_FILTER_PROC

注意进程ID上的事件

KQ_FILTER_NETDEV

监视Mac OS X上不可用的网络设备上的事件

KQ_FILTER_SIGNAL

每当观看的信号被传送到进程时,都会返回

KQ_FILTER_TIMER

建立一个任意的计时器

kevent.flags

筛选器操作。

不变

含义

KQ_EV_ADD

添加或修改事件

KQ_EV_DELETE

从队列中移除一个事件

KQ_EV_ENABLE

Permitscontrol()返回事件

KQ_EV_DISABLE

Disablesevent

KQ_EV_ONESHOT

第一次发生后删除事件

KQ_EV_CLEAR

检索事件后重置状态

KQEVSYSFLAGS

内部事件

KQEVFLAG1

内部事件

KQ_EV_EOF

过滤特定的EOF状况

KQ_EV_ERROR

查看返回值

kevent.fflags

过滤特定的标志。

KQ_FILTER_READ and KQ_FILTER_WRITE filter flags:

不变

含义

KQ_NOTE_LOWAT

套接字缓冲区的低水印

KQ_FILTER_VNODE filter flags:

不变

含义

KQ_NOTE_DELETE

unlink()被调用

KQ_NOTE_WRITE

发生了写入

KQ_NOTE_EXTEND

该文件已被扩展

KQ_NOTE_ATTRIB

一个属性被改变了

KQ_NOTE_LINK

链接计数已更改

KQ_NOTE_RENAME

该文件被重命名

KQ_NOTE_REVOKE

对该文件的访问被撤销

KQ_FILTER_PROC 过滤器标志:

不变

含义

KQ_NOTE_EXIT

该过程已经退出

KQ_NOTE_FORK

该过程称为fork()

KQ_NOTE_EXEC

该过程已经执行了一个新过程

KQ_NOTE_PCTRLMASK

内部过滤器标志

KQ_NOTE_PDATAMASK

内部过滤器标志

KQ_NOTE_TRACK

遵循fork()过程

KQ_NOTE_CHILD

在NOTE_TRACK的子进程上返回

KQ_NOTE_TRACKERR

无法附属于孩子

KQ_FILTER_NETDEV 过滤器标志(在Mac OS X上不可用):

不变

含义

KQ_NOTE_LINKUP

链接已启动

KQ_NOTE_LINKDOWN

链接已关闭

KQ_NOTE_LINKINV

链接状态无效

kevent.data

过滤特定的数据。

kevent.udata

用户定义的值。

输入/输出 | Input/ouput相关

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法