0

私は自分のFTPに大きなファイルを持っており、Googleのクラウドストレージに書き込む必要があります。 私は最初にftpからローカルファイルにダウンロードし、ローカルファイルをリモートストレージに送信することを考えました。しかし、私はそれをローカルにダウンロードせずにやりたい は、これまでのところ私は、次のコードを思い付いた:ソース間のPythonストリームデータ

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

関連する問題