使用Python Paramiko从SFTP服务器读取.csv文件到内存

使用Python Paramiko从SFTP服务器读取.csv文件到内存,python,pandas,sftp,paramiko,Python,Pandas,Sftp,Paramiko,我试图在Python内存中读取SFTP上的CSV文件。我尝试了以下方法,这对于FTP连接很好,但对于SFTP则不行 例如,我想复制: df = pd.read_csv(...) 但是没有先在本地存储它(原因是我想把它作为一个云函数运行,然后我不想在缓存中存储本地文件) 我怎样才能做得不同 def read_file_sftp_local_memory(sftp, path, filename): flo = BytesIO() path_query = "".join(['R

我试图在Python内存中读取SFTP上的CSV文件。我尝试了以下方法,这对于FTP连接很好,但对于SFTP则不行

例如,我想复制:

df = pd.read_csv(...)
但是没有先在本地存储它(原因是我想把它作为一个云函数运行,然后我不想在缓存中存储本地文件)

我怎样才能做得不同

def read_file_sftp_local_memory(sftp, path, filename):

    flo = BytesIO()
    path_query = "".join(['RETR ', path, '/', filename])
    sftp.retrbinary(path_query, flo.write)
    flo.seek(0)
    return flo
我还尝试了以下方法:

def read_file_csv(sftp, path, filename):

    # Download
    sftp.get("/".join( os.path.join(path, filename) ), filename)

    # Read
    df = pd.read_csv(filename)

    # Delete
    os.remove(filename)

    # Return
    return df
但结果是:

错误:

raise IOError(文本)
错误:失败

假设您使用的是Paramiko SFTP库,请使用:

有关
预取的目的,请参阅

with sftp.open(path) as f:
    f.prefetch()
    df = pd.read_csv(f)