title: python stream data between sources
body: <p>I have a large file in my FTP, and I need to write it to google cloud storage.
  My first thought would be download it from ftp to local file, and then transmit local file to remote storage. But I would prefer to do it without downloading it localy.
  So far I came up with the following code: </p>
  
  <pre><code>from ftplib import FTP
  import io
  
  ftp = ftp = FTP('example.com')
  ftp.voidcmd('TYPE I')
  sock = ftp.transfercmd('RETR file.csv')
  raw = io.BytesIO()
  file = io.BufferedRandom(raw)
  
  blob = bucket.blob('blobname.csv', chunk_size=262144)  # gcs blob
  blob.upload_from_file(file, content_type='text/csv', rewind=True)
  </code></pre>
  
  <p>But I get: </p>
  
  <pre><code>Traceback (most recent call last):
    File "/home/tsh/example.py", line 65, in &lt;module&gt;
      file = io.BufferedRandom(raw)
  io.UnsupportedOperation: File or stream is not seekable.
  </code></pre>
  
  <p>Is there a way to pipe data from ftp to cloud storage (or any other remote resource) without downloading it to local machine? I am using python 3.6.</p>