code: def file_open(self, path, access_mode, open_action, creation_mode):
          
          if not isinstance(path, basestring):
              raise TypeError("path can only be an instance of type basestring")
          if not isinstance(access_mode, FileAccessMode):
              raise TypeError("access_mode can only be an instance of type FileAccessMode")
          if not isinstance(open_action, FileOpenAction):
              raise TypeError("open_action can only be an instance of type FileOpenAction")
          if not isinstance(creation_mode, baseinteger):
              raise TypeError("creation_mode can only be an instance of type baseinteger")
          file_p = self._call("fileOpen",
                       in_p=[path, access_mode, open_action, creation_mode])
          file_p = IGuestFile(file_p)
          return file_p
docs: Opens a file and creates a :py:class:`IGuestFile`  object that
          can be used for further operations.
  
          in path of type str
              Path to file to open.  Guest path style.
  
          in access_mode of type :class:`FileAccessMode`
              The file access mode (read, write and/or append).
              See :py:class:`FileAccessMode`  for details.
  
          in open_action of type :class:`FileOpenAction`
              What action to take depending on whether the file exists or not.
              See :py:class:`FileOpenAction`  for details.
  
          in creation_mode of type int
              The UNIX-style access mode mask to create the file with if @a openAction
              requested the file to be created (otherwise ignored).  Whether/how all
              three access groups and associated access rights are realized is guest
              OS dependent.  The API does the best it can on each OS.
  
          return file_p of type :class:`IGuestFile`
              :py:class:`IGuestFile`  object representing the opened file.
  
          raises :class:`VBoxErrorObjectNotFound`
              File to open was not found.
          
          raises :class:`VBoxErrorIprtError`
              Error while opening the file.
          
          raises :class:`VBoxErrorMaximumReached`
              The maximum of concurrent guest files has been reached.