"IOError:[Errno 71]协议错误"在虚拟机debian机器中使用python读取文件时

Mac*_*hie 9 python linux debian virtualbox virtual-machine

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

主持人:Ubuntu 14.04 LTS

嘉宾:Debian Wheezy 7.5

VM软件: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
Run Code Online (Sandbox Code Playgroud)

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

Oli*_* O. 1

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

\n

背景:当对 VirtualBox 共享文件使用 Linuxread(2)系统调用时,特定条件会使 VirtualBox 驱动程序失败并出现错误71 (EPROTO) \xe2\x80\x93 Protocol error(请参阅下面的票证)。该错误源自 Linux 内核空间,并通过 C 库传播到应用程序(请参阅errno(3))。在本例中,应用程序恰好是 Python 解释器。

\n

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

\n

相关 VirtualBox 门票:

\n\n

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

\n