" IOError:[Errno 71]协议错误"在virtualbox debian机器上用python读取文件时

时间:2015-07-31 23:12:13

标签: python linux debian virtual-machine virtualbox

我尝试打开并读取在虚拟机中运行的Python 2.7.3中的文件:

主持人:Ubuntu 14.04 LTS

嘉宾:Debian Wheezy 7.5

VM-Software:VirtualBox V4.3.30

在VM内的Python控制台中,我输入以下内容:

>>> f = open("Testing/results.txt", "w+")
>>> f.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 71] Protocol error

该文件存在且位于共享文件夹中。如果我尝试在位于VM文件系统上的文件上执行相同操作,则可以正常工作。同时用模式打开文件&#34; r +&#34;或&#34; a +&#34;,它可以工作,但它不会被截断。在读取模式下打开后手动截断文件是有效的,目前,我将其用作解决方法。但也许这里的任何人都知道,为什么会出现这种错误?

1 个答案:

答案 0 :(得分:1)

此错误的最可能原因是VirtualBox Linux Guest Additions中的错误,更具体地说,其设备驱动程序之一vboxguest(与主机通信)和vboxsf(提供共享vboxguest上的来宾上的文件夹服务)。

背景:在VirtualBox共享文件上使用Linux read(2)系统调用时,特定条件使VirtualBox驱动程序失败,错误为71 (EPROTO) – Protocol error(请参见下面的票证)。该错误起源于Linux内核空间,并通过C库传播到应用程序(请参见errno(3))。在这种情况下,应用程序恰好是Python解释器。

Python代码或文件权限没有问题。该代码仅执行触发错误的合法操作序列。

相关的VirtualBox票证:

根据故障单#8463,此错误(或相关问题)已于2017年1月17日在VirtualBox Linux Guest Additions 5.1.14 / 5.0.32中修复。