本文介绍了从 SFTP 服务器打开 Astropy FITS 文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 Python 脚本,可以使用 Paramiko 模块通过 ssh 连接到远程服务器.

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

下面是我的脚本

import paramiko

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

本地机器上的 FITS 文件通常是这样打开的:

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

from astropy.io import fits

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

我想知道如何从 SFTP 服务器计算机打开 FITS 文件并将其存储在本地计算机的变量 hdu 下.

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 方法 接受一个类似文件的对象来代替文件名:

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

name : 文件路径、文件对象、类文件对象或 pathlib.Path 对象

表示远程文件的类文件对象由 Paramiko SFTPClient.open 方法:

返回一个类文件对象,它非常模仿普通 Python 文件对象的行为,包括用作上下文管理器的能力.

所以这应该有效:


So this should work:

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

这篇关于从 SFTP 服务器打开 Astropy FITS 文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 11:24