【问题标题】:How can it be that "not all file objects are seekable", according to pydoc?根据pydoc,“并非所有文件对象都是可查找的”怎么可能?
【发布时间】:2019-04-05 05:52:16
【问题描述】:

我运行了“pydoc file.seek”,文档中的这一行让我感到困惑。 “请注意,并非所有文件对象都是可搜索的。”据我了解,“不可搜索”的意思是“即使你有访问权限,你也不能使用搜索”。我不明白,这怎么可能?怎么会有无法搜索的文件对象?

【问题讨论】:

  • “文件对象”不一定表示实际的磁盘文件。也许它是一个套接字,或者一个管道,或者任何其他方便的东西,当它实际上不是一个文件时,好像它是一个文件
  • @JohnGordon 啊,那我明白了。
  • 仅当文件流支持随机访问时才可搜索。任何偏差都可能遇到这个
  • @SriniV 等等,你是说磁带上的文件不可搜索吗?

标签: python file seek


【解决方案1】:

磁盘上的文件始终是可查找的,但文件句柄抽象不仅仅适用于本地磁盘上的文件。像管道、网络套接字等单向信息流只有在您将它们缓冲或保存在内存中时才为您服务;除非您自己保存了信息,否则您无法返回并重新获取五分钟前客户对您的回复。

【讨论】:

  • 如果我通过网络访问另一台计算机(我们称之为服务器)的文件怎么办?就像 Youtube 的视频播放器似乎能够随机访问它播放的视频文件,即使它没有缓冲也可以来回播放。并非没有延迟,但似乎可以通过网络进行随机访问。
  • 这是因为有一个比单个单向网络连接更复杂的机制在起作用。在不检查播放器的情况下,我假设有一个协议可以告诉服务器您要倒带流。这不会改变您播放或跳过的位不再可用的事实,除非您让服务器重新传输它们。 (当然,至少在理论上,客户端也可以将播放或跳过的位保留在内存中以便它可以返回;但同样,网络连接是不可搜索的。)
猜你喜欢
  • 2023-01-13
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多