0

내 FTP에 큰 파일이 있는데, Google 클라우드 저장소에 써야합니다. 내 첫 번째 생각은 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에서 파이프 데이터에 대한 방법 (또는 다른 원격 리소스)를 다운로드하지 않고 있는가 그것은 로컬 컴퓨터에? 나는 파이썬 3.6을 사용하고있다.

답변

1

나는 파이썬없이 원하는 것을 얻을 수 있다고 생각한다. rclone을 사용한다. 이 파이썬을 사용해야하며 어쩌면 래퍼를 제공하거나 subprocess 모듈을 사용할 수 있습니다.

+0

rclone을 제안 해 주셔서 감사합니다.하지만 서브 프로세스없이 순수한 파이썬으로 처리해야합니다. – tsh