0

我在我的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

我认为你可以使用rclone来实现你想要的,不用python。如果你必须使用Python,也许他们提供了一个包装,或者你可以使用subprocess模块。

+0

感谢您提供rclone,但我需要在纯python中完成,而不需要子进程。 – tsh