我们从Python开源项目中,提取了以下6个代码示例,用于说明如何使用errno.ESPIPE。
def __init__(self, input, size=None, **args): if not hasattr(input, "seek"): if size is None: input = InputPipe(input, self._setSize) else: input = InputPipe(input) elif size is None: try: input.seek(0, 2) size = input.tell() * 8 except IOError as err: if err.errno == ESPIPE: input = InputPipe(input, self._setSize) else: source = args.get("source", "<inputio:%r>" % input) raise InputStreamError( "Unable to get size of %s: %s" % (source, err)) self._input = input InputStream.__init__(self, size=size, **args)
def __init__(self, input, size=None, **args): if not hasattr(input, "seek"): if size is None: input = InputPipe(input, self._setSize) else: input = InputPipe(input) elif size is None: try: input.seek(0, 2) size = input.tell() * 8 except IOError, err: if err.errno == ESPIPE: input = InputPipe(input, self._setSize) else: charset = getTerminalCharset() errmsg = unicode(str(err), charset) source = args.get("source", "<inputio:%r>" % input) raise InputStreamError(_("Unable to get size of %s: %s") % (source, errmsg)) self._input = input InputStream.__init__(self, size=size, **args)
def try_seek(fd, offset): try: if offset is None: os.lseek(fd, 0, os.SEEK_END) elif offset >= 0: os.lseek(fd, offset, os.SEEK_SET) else: os.lseek(fd, offset, os.SEEK_END) except OSError as ose: if ose.args[0] != errno.ESPIPE: raise
def seekable(self): if self._seekable is None: try: _original_os.lseek(self._fileno, 0, _original_os.SEEK_CUR) except IOError as e: if get_errno(e) == errno.ESPIPE: self._seekable = False else: raise else: self._seekable = True return self._seekable
def _get_file_size(self, obj): """Analyze file-like object and attempt to determine its size. :param obj: file-like object, typically redirected from stdin. :retval The file's size or None if it cannot be determined. """ # For large images, we need to supply the size of the # image file. See LP Bugs #827660 and #845788. if hasattr(obj, 'seek') and hasattr(obj, 'tell'): try: obj.seek(0, os.SEEK_END) obj_size = obj.tell() obj.seek(0) return obj_size except IOError as e: if e.errno == errno.ESPIPE: # Illegal seek. This means the user is trying # to pipe image data to the client, e.g. # echo testdata | bin/glance add blah..., or # that stdin is empty, or that a file-like # object which doesn't support 'seek/tell' has # been supplied. return None else: raise else: # Cannot determine size of input image return None