Действительно, fsspec.AbstractFileSystem
(на котором основан GCSFileSystem
), в частности его readline
метод , похоже, не совместим с ftplib.
Вам нужно использовать FTP.storlines
(текстовый режим)? Не можете ли вы использовать FTP.storbinary
(двоичный режим)?
with fs.open('myFile.csv') as f:
ftp.storbinary("STOR myFile.csv", f)
FTP.storbinary
передает файл порциями (определяется необязательным параметром blocksize
со значением по умолчанию 8192).
Если нет, вам придется реализовать класс-оболочку с API, совместимым с FTP.storlines
:
class GCSFileSystemCompat:
def __init__(self, f):
self.f = f
def readline(self, size):
return f.readline()
with fs.open('myFile.csv') as f,
ftp.storlines("STOR myFile.csv", GCSFileSystemCompat(f))
(не проверено, но оно должно датьвам идея)