Mc Missile
Mc Missile

Reputation: 735

Opening Astropy FITS file from SFTP server

I have a Python script that ssh into a remote server using Paramiko module.

The below is my script

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("host", username="McMissile")

A FITS file on a local machine is usually opened as follows:

from astropy.io import fits

hdu = fits.open('File.fits')

I was wondering how would I open a FITS file from the SFTP server machine and store it under the variable hdu in the local machine.

I cannot download the file from the server to the local machine due to the storage constraints.

Upvotes: 2

Views: 292

Answers (1)

Martin Prikryl
Martin Prikryl

Reputation: 202272

Astropy.io fits.open method accepts a file-like object in place of a file name:

name : file path, file object, file-like object or pathlib.Path object


A file-like object representing a remote file is returned by Paramiko SFTPClient.open method:

A file-like object is returned, which closely mimics the behavior of a normal Python file object, including the ability to be used as a context manager.


So this should work:

sftp_client = ssh_client.open_sftp()
with sftp_client.open('remote_filename') as remote_file:
    hdu = fits.open(remote_file)

Upvotes: 3

Related Questions