You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python批量下载txt中的FITS文件并转存为JPEG?

批量处理FITS文件:下载与格式转换

依赖安装

先安装所需Python包:

pip install requests astropy matplotlib

1. 批量下载FITS文件

读取URL文本文件,按001.fits、002.fits...的规则命名保存:

import os
import requests

# 自定义配置
url_list_file = "fits_urls.txt"  # 存储URL的文本文件路径
fits_storage_dir = "fits_files"
os.makedirs(fits_storage_dir, exist_ok=True)

# 读取URL
with open(url_list_file, "r", encoding="utf-8") as f:
    urls = [line.strip() for line in f if line.strip()]

# 循环下载
for seq_num, url in enumerate(urls, start=1):
    save_name = f"{seq_num:03d}.fits"
    full_path = os.path.join(fits_storage_dir, save_name)
    
    try:
        resp = requests.get(url, stream=True)
        resp.raise_for_status()
        
        with open(full_path, "wb") as out_f:
            for chunk in resp.iter_content(chunk_size=8192):
                out_f.write(chunk)
        print(f"已下载:{save_name}")
    except Exception as err:
        print(f"下载失败 {url}:{str(err)}")

2. 批量转存为JPEG

遍历下载的FITS文件,转换为JPEG格式:

import os
from astropy.io import fits
import matplotlib.pyplot as plt

# 自定义配置
fits_source_dir = "fits_files"
jpeg_storage_dir = "jpeg_files"
os.makedirs(jpeg_storage_dir, exist_ok=True)

# 获取FITS文件列表(按命名排序)
fits_files = sorted(f for f in os.listdir(fits_source_dir) if f.endswith(".fits"))

# 循环转换
for fits_file in fits_files:
    fits_path = os.path.join(fits_source_dir, fits_file)
    jpeg_name = f"{fits_file.split('.')[0]}.jpg"
    jpeg_path = os.path.join(jpeg_storage_dir, jpeg_name)
    
    try:
        # 读取FITS数据
        with fits.open(fits_path) as hdul:
            image_data = hdul[0].data
        
        # 生成JPEG
        plt.figure(figsize=(8, 8))
        plt.imshow(image_data, cmap="gray")
        plt.axis("off")
        plt.savefig(jpeg_path, bbox_inches="tight", pad_inches=0, dpi=100)
        plt.close()
        print(f"已转换:{jpeg_name}")
    except Exception as err:
        print(f"转换失败 {fits_file}:{str(err)}")

关键说明

  • URL文本文件需保证每行一个有效链接,无空行或多余空格
  • 若FITS文件包含多扩展HDU,可修改hdul[0]为对应扩展索引
  • 可调整cmap参数(如viridis、plasma)改变JPEG的色彩风格
  • 分块下载(stream=True)适合处理大体积FITS文件,避免内存溢出

内容的提问来源于stack exchange,提问作者Batman123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 00:10:21