首页 / PYTHON / 在Python中读取带超时的文件
在Python中读取带超时的文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Python中读取带超时的文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1086字,纯文字阅读大概需要2分钟。
内容图文
![在Python中读取带超时的文件](/upload/InfoBanner/zyjiaocheng/710/624c7cea0a814c26a3a8dba8ec6f4807.jpg)
在Linux中,有一个文件/ sys / kernel / debug / tracing / trace_pipe,顾名思义就是一个管道.所以,假设我想用Python读取它的前50个字节 – 我运行以下代码:
$sudo python -c 'f=open("/sys/kernel/debug/tracing/trace_pipe","r"); print f; print f.read(50); f.close()<br>
<open file '/sys/kernel/debug/tracing/trace_pipe', mode 'r' at 0xb7757e90>
我们可以看到打开文件的速度很快(如果我们拥有超级用户权限) – 但是,如果此时trace_pipe文件为空,它将只是阻塞(即使有内容,内容也将被转储,直到有不再,然后文件将阻止).然后我必须按Ctrl-C用KeyboardInterrupt中断Python脚本…
如何让Python 2.7执行超时读取?
也就是说,我想指示Python“尝试从这个文件中读取50个字节;如果你在一秒钟后没有成功,就放弃并返回”?
解决方法:
采用
os.read(f.fileno(), 50)
代替.这不会等到读取指定的字节数,而是在读取任何内容时返回(最多指定的字节数).
如果您没有从该管道中读取任何内容,这并不能解决您的问题.在这种情况下,您应该使用模块选择中的select来测试是否有要读取的内容.
编辑:
使用select测试空输入:
import select
r, w, e = select.select([ f ], [], [], 0)
if f in r:
print os.read(f.fileno(), 50)
else:
print "nothing available!" # or just ignore that case
内容总结
以上是互联网集市为您收集整理的在Python中读取带超时的文件全部内容,希望文章能够帮你解决在Python中读取带超时的文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。