Прочтите удаленный файл NetCDF через ssh в Python, используя netCDF4

Как я могу прочитать файл NetCDF удаленно с помощью Python?

Легко прочитать файл с сервера с помощью ssh, используя Python, но как я могу заменить команду sftp_client.open() чем-то вроде netCDF4.Dataset(), чтобы сохранить этот результат в переменной?

В следующем примере я загружаю локально и временно файл, который хочу прочитать удаленно:

import os
import paramiko
import netCDF4

remotefile = 'pathtoremotefile'
localfile = 'pathtolocaltmpfile'

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect('myserver', username="myname", password="mypswd")

sftp_client = ssh_client.open_sftp()

# Something similar than this but for a NetCDF file? 
# Or how to use remote_file in netCDF4 afterwards?
# remote_file = sftp_client.open(remotefile)

# Here, I just download it to manipulate it locally...
sftp_client.get(remotefile, localfile)

try:
    ncfile = netCDF4.Dataset(localfile)
    # Operations...

finally:
    sftp_client.close()
    ssh_client.close()
    os.remove(localfile)

person ztl    schedule 29.01.2018    source источник


Ответы (1)


вы можете смонтировать удаленный ssh ​​локально с помощью sshfs и открыть его как локальный файл

import os
import netCDF4
localfile = 'pathtolocalmountpoint/relativepathtofile'
try:
  ncfile = netCDF4.Dataset(localfile)
person Antonio S. Cofiño    schedule 30.01.2018