我在服务器上有一个二进制数据文件,我想用numpy读取。
我注意到我可以使用paramiko
SSH2模块与文件建立远程SFTP连接,而不是登录服务器并在那里运行我的Python代码:
import paramiko
# get SSH connection to remote server (els039)
ssh_client=paramiko.SSHClient()
ssh_client.load_system_host_keys()
ssh_client.connect("els039")
# now get SFTP client connection:
sftp_client = ssh_client.open_sftp()
# get connection to remote file
rfile = sftp_client.open('2013041506.dat')
现在,我可以使用标准的Python文件读取函数来访问数据,但我不能使用Numpy来读取数据。例如,我想从这样的数据中读取3个数组(已知长度):
zdat = np.fromfile(rfile, dtype=">f8", count=zdat_len)
udat = np.fromfile(rfile, dtype=">f8", count=udat_len)
vdat = np.fromfile(rfile, dtype=">f8", count=vdat_len)
但是numpy不喜欢rfile
属于paramiko.SFTPFile
类型的事实。
有没有办法做我想做的事情 - 或者我应该将整个文件放到本地目录中?
答案 0 :(得分:-1)
那么你应该对numpy.fromfile()
访问<fileObject>
的{{1}}方法进行逆向工程来读取结构/数据单元格,并自己创建一个ad-hoc addOn,为{{1}创建一个子类。对象/实例方法。
然后您可能选择在paramiko.SFTPFile
文件系统上下载(实例化)普通.dat
- 文件实例,<localhost>
和/或numpy.fromfile()
标准方法可以过程&amp;以这种方式完成工作。