Python 从远程读取h5文件

Python 从远程读取h5文件,python,ssh,Python,Ssh,我有一个问题,我无法从我的服务器读取h5文件。我的服务器上有ssh,而且服务器是本地的。所以我有两种类型的代码: store1 = pd.HDFStore(os.system("scp newrow_data_copy.h5 lucy@192.168.1.51:media/lucy/hdd1/hdf_row/Archive1")) 错误应为字节,得到整数。此外,os.system表示错误,应为字符串 store1 = pd.HDFStore('//192.168.1.51/media/lucy

我有一个问题,我无法从我的服务器读取h5文件。我的服务器上有ssh,而且服务器是本地的。所以我有两种类型的代码:

store1 = pd.HDFStore(os.system("scp newrow_data_copy.h5 lucy@192.168.1.51:media/lucy/hdd1/hdf_row/Archive1"))
错误应为字节,得到整数。此外,os.system表示错误,应为字符串

store1 = pd.HDFStore('//192.168.1.51/media/lucy/hdd1/hdf_row/Archive1/newrow_data_copy.h5', mode='r')
错误:文件不存在。不过,我在服务器上看到了该文件


从远程服务器读取h5文件有什么问题,我应该怎么做。我无法下载,因为文件太大了

您知道,根据定义,读取整个远程文件就是下载,对吗?无论是将文件下载到工作内存还是磁盘,都是一个完全不同的问题

也就是说,除非您愿意编写自己的tty仿真器,否则
ssh
scp
都不会对您有多大帮助,因此只需安装该模块并在Python中满足所有远程ssh/SFTP需求即可。在您的情况下,这应该可以做到:

import pandas as pd
import paramiko

ssh = paramiko.SSHClient()  # start the client
ssh.load_system_host_keys()  # load local host keys
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # add the host keys automatically
ssh.connect("192.168.1.51", 22, "lucy", "your_password")  # replace the password with yours

sftp = ssh.open_sftp()  # start a SFTP session
# 'open' the remote file, adjust the path based on your home path (or use an absolute path)
target = sftp.open("media/lucy/hdd1/hdf_row/Archive1/newrow_data_copy.h5")
更新:但这就是您仅获取远程文件句柄的方式(您可以对本地文件进行流式处理、查找和执行任何其他操作),不幸的是,在第二次查看时-
HDFStore
需要一个文件路径,并通过
PyTables
执行所有文件处理。因此,除非您想破解
PyTables
以处理远程数据(而您不想),否则最好的办法是将远程文件系统安装并装载到本地文件系统,然后让Panda将远程文件视为本地文件,例如:

sshfs lucy@192.168.1.51:media/lucy/hdd1 ~/hdf
然后在Python中:

import os
import pandas as pd

store1 = pd.HDFStore(os.path.expanduser("~/hdf/hdf_row/Archive1/newrow_data_copy.h5"))

该文件不会直接下载,除非
PyTables
被指示存储该文件,而不是将其读取到内存中。

您可以使用
os.path.exists(file)
检查文件是否从Python中看到,
pd.HDFStore()file@SamChats对我需要做sshfslucy@192.168.1.51:media/lucy/hdd1~/hdf在pandas命令或Ide?@NurislomTuraev中-在控制台中,在安装
sshfs
之后,在运行Python脚本之前。只要您与远程服务器有连接,装载将一直保持到下次重新启动。我仅在anaconda中发现sshfs,pip安装不起作用。当我想在python控制台中运行它时,它显示错误不是python模块——它是操作系统的SSH文件系统扩展,所以使用操作系统的包管理器来安装它。阅读上面链接页面上的安装说明,或者只进行谷歌搜索:
install sshfs
一切正常,但它无法读取文件。所以我只是复制了它+1.