0

我需要使用 pyfits ( http://www.stsci.edu/institute/software_hardware/pyfits ) 为我正在做的工作打开/编写一些光谱。问题是,每次我使用“writeto”函数写入 .fits 文件并覆盖它时,我都会在屏幕上收到“覆盖现有文件:XXX.fits”消息。是否可以告诉程序不显示此特定消息?

我已经检查过并且找不到将停用此消息的“writeto”函数的关键字,所以我在想是否有任何方法告诉python将特定函数的所有输出(除非它是错误)重定向到某个东西像 /dev/null 或类似的。

最坏的情况,我认为可能使用“日志记录”并将所有输出重定向到一个文件,就是这样..

有任何想法吗?

4

2 回答 2

1

当您“破坏”现有文件时,该库使用 Pythonwarnings模块发出警告。

您可以使用相同的模块来抑制警告:

import warnings

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    pyfits.writeto(...)

使用catch_warnings()上下文管理器会抑制所有pyfits.writeto()可能引发的警告。您还可以为要忽略的特定消息配置过滤器:

import warnings
warnings.filterwarnings('ignore', message='Overwriting existing file .*', module='pyfits\.hdu.*')

将忽略以例如Overwriting existing file开头的模块引发的消息。pyfits.hdu

于 2013-02-18T14:13:11.673 回答
0

您可以使用warnings.filterwarnings来抑制消息。只需添加

warnings.filterwarnings('ignore', message='Overwriting existing file')
于 2013-02-18T14:12:51.233 回答