首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从远程读取h5文件

从远程读取h5文件
EN

Stack Overflow用户
提问于 2017-07-17 12:15:30
回答 1查看 1.6K关注 0票数 2

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

代码语言:javascript
运行
复制
store1 = pd.HDFStore(os.system("scp newrow_data_copy.h5 lucy@192.168.1.51:media/lucy/hdd1/hdf_row/Archive1"))

错误是预期的字节,得到int。此外,os.system说错了,预期字符串

代码语言:javascript
运行
复制
store1 = pd.HDFStore('//192.168.1.51/media/lucy/hdd1/hdf_row/Archive1/newrow_data_copy.h5', mode='r')

错误:文件不存在。不过,我看到了服务器上的文件。

有什么问题,我应该如何从远程服务器读取h5文件。我不能下载,因为文件很大。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-17 12:32:45

您知道,从定义上讲,读取整个远程文件就是下载,对吗?是否将文件下载到工作内存或磁盘是一个完全不同的问题。

尽管如此,除非您愿意编写自己的tty仿真器,否则sshscp都不会对您有多大帮助,所以只需安装paramiko模块并使用它满足您的远程SSH/SFTP在Python中的所有需要。就你的情况而言,这应该可以做到:

代码语言:javascript
运行
复制
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")

UPDATE:但这就是您只能获得远程文件句柄的方式(您可以对本地文件进行流、查找和任何其他操作),遗憾的是,HDFStore期待文件的路径并通过PyTables执行所有文件处理,因此,除非您想黑PyTables来处理远程数据(而不是),最好的方法是安装sshfs并将远程文件系统挂载到本地文件中,然后让Pandas将远程文件作为本地文件处理,如下所示:

代码语言:javascript
运行
复制
sshfs lucy@192.168.1.51:media/lucy/hdd1 ~/hdf

然后在Python中:

代码语言:javascript
运行
复制
import os
import pandas as pd

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45144080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档