源之间的python流数据

时间:2017-10-13 15:53:46

标签: python tcp network-programming google-cloud-platform google-cloud-storage

我的FTP中有一个大文件,我需要将其写入谷歌云存储。 我的第一个想法是将它从ftp下载到本地文件,然后将本地文件传输到远程存储。但我更愿意这样做,而无需下载本地。 到目前为止,我想出了以下代码:

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)

但我明白了:

Traceback (most recent call last):
  File "/home/tsh/example.py", line 65, in <module>
    file = io.BufferedRandom(raw)
io.UnsupportedOperation: File or stream is not seekable.

有没有办法将数据从ftp传输到云存储(或任何其他远程资源)而无需将其下载到本地计算机?我使用的是python 3.6。

1 个答案:

答案 0 :(得分:1)

我认为你可以使用rclone在没有python的情况下实现你想要的。如果你必须使用python,也许他们提供了一个包装器,或者你可以使用subprocess模块。