On 2016-02-11 12:53, Ulli Horlacher wrote:
Antoon Pardon <antoon.par...@rece.vub.ac.be> wrote:

> (How) can I read a tar file from a (tcp) socket?
> I do not have a pathname but a socket object from socket.create_connection

# First you construct a file object with makefile.

fo = socket.makefile()

# Then you use the fileobj argument with tarfile.open.

tarfile.open(mode='r', fileobj = fo)


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'

I suppose you could write your own class to wrap the socket and provide the required methods.

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to