Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Chris Angelico Newsgroups: comp.lang.python Subject: Re: tarfile : read from a socket? Date: Fri, 12 Feb 2016 00:18:04 +1100 Lines: 29 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: news.uni-berlin.de xSSjEOFsecFxaZfUChZAwAPdRkKLxnbKChXSEnRz2+Wg== Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.024 X-Spam-Evidence: '*H*': 0.95; '*S*': 0.00; 'cc:addr:python-list': 0.09; '__init__': 0.09; 'mode,': 0.09; 'thu,': 0.15; '2016': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'received:io': 0.16; 'received:psf.io': 0.16; 'sock': 0.16; 'tarfile': 0.16; 'wrote:': 0.16; 'attribute': 0.18; 'have:': 0.18; 'cc:2**0': 0.20; 'cc:addr:python.org': 0.20; 'skip:" 30': 0.20; 'file.': 0.22; 'feb': 0.23; '(most': 0.24; 'header:In-Reply-To:1': 0.24; 'message-id:@mail.gmail.com': 0.27; "skip:' 10": 0.28; '**kwargs)': 0.29; 'subject: : ': 0.30; 'skip:s 30': 0.31; 'skip:t 50': 0.32; 'traceback': 0.33; 'open': 0.33; 'file': 0.34; 'received:google.com': 0.35; 'but': 0.36; 'should': 0.36; 'received:209.85': 0.36; 'possible': 0.36; 'subject:?': 0.36; 'pm,': 0.36; 'subject:: ': 0.37; 'received:209.85.213': 0.37; 'received:209': 0.38; 'subject:from': 0.39; "didn't": 0.39; 'build': 0.40; 'more': 0.63; 'content,': 0.66; 'sounds': 0.76; 'chrisa': 0.84; 'subject:read': 0.84; 'upstream': 0.84; 'to:none': 0.91; 'glance': 0.91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=EcXpecg0ckDOVHjXsA/SQc+hJB+5i5rw+P8mciuBt6o=; b=VwxDAxdwQEzLQPe0aaInOzriW88wFmbhazXbApXS/o/VyR1ml0GRwW6AbBO9IGOppE WQAvlS69dODtJ2g+ohOqKaEfWKjw4a4UAPG2Lf6OKNDkUMz55g3MCoGaArDA6NVI9DFQ Wa2DvqTosAZNGNlCH/YRjH78rVaww5oFi9rEoKXwxYB4fX+nEyjFj1lgiLRZKZzuussw Peinpfbg/8MJomQIuHWdZIZp5UdnRWsKLzvl1JsCHpC0gV00U3bZKkNoEuHu+Iu019cn c2gyL8gP0eVErxzdrNbNtOBwYjgJAX7Tkf49wFjFEBU9XNkhsaHBQd2wlp3GGmZdwlQc aIpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:cc:content-type; bh=EcXpecg0ckDOVHjXsA/SQc+hJB+5i5rw+P8mciuBt6o=; b=IxsYGmHVy3Na9sJekBuQDQ1q17jmXLz6uOLPh44M1QT0eAjIfeJ9LW1WpQRT/z7i+8 edj03fXhy6UhcRVgUpmkC1H1phAwi5ZF3QtQMKDTY3WwKAeu9BrXqslUrTGkKBpGkVox A3OUaixyGiV2ToUihWr+Cw2w8ieS8Ok7YCdEg5/u3y+p1wHlUfRTdn2EsSCxG51uRJu8 TwkDbJ/w33k2wpHPH0eQltrFkGricjvQ8c0T/8grjTl11r9bV8YpThj5dfLWORf5l9II KWFmKG2JP1qwr2Wr3PQRTPc0/4KJS+9u2nmBrIAOf5WXxWnnwrr2onKY9vfCKe8Deer7 e5CQ== X-Gm-Message-State: AG10YOT3u/sQeETz/lw1K/VxT4mkGYpEA9HFm6EvSPFvVlenkFkWHfTqCw4gfzUpC3COgR4wAqV2DWx/PO2w6w== X-Received: by 10.50.176.195 with SMTP id ck3mr16985498igc.94.1455196684776; Thu, 11 Feb 2016 05:18:04 -0800 (PST) In-Reply-To: X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.21rc2 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com comp.lang.python:102806 On Thu, Feb 11, 2016 at 11:53 PM, Ulli Horlacher wrote: > I have: > > sock = socket.create_connection((server,port)) > bs = kB64 > taro = tarfile.open(fileobj=sock.makefile('w',kB64),mode='w') > > > > Traceback (most recent call last): > (...) > File "./fexit.py", line 1838, in sex_send > taro = tarfile.open(fileobj=sock.makefile('w',kB64),mode='w') > File "/usr/lib/python2.7/tarfile.py", line 1695, in open > return cls.taropen(name, mode, fileobj, **kwargs) > File "/usr/lib/python2.7/tarfile.py", line 1705, in taropen > return cls(name, mode, fileobj, **kwargs) > File "/usr/lib/python2.7/tarfile.py", line 1566, in __init__ > self.offset = self.fileobj.tell() > AttributeError: '_fileobject' object has no attribute 'tell' Sounds like tarfile needs a seekable file. How big is this file you're reading? Can you simply read the whole thing into memory, then use io.BytesIO? I had a quick glance at help(BytesIO) but didn't find a simple way to make a buffer that reads from an upstream file when it needs more content, but it should be possible to build one. ChrisA