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.
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)