静音 music21 警告
Silence music21 warnings
我收到大量关于零时值和弦的 music21 警告:
WARNING: midi chord with zero duration will be treated as grace
我尝试用以下内容覆盖 music21.environment.Environment()
上的 warn
方法:
def silence(*args, **kwargs): pass
e = music21.environment.Environment()
setattr(e, 'warn', silence)
我也试过关闭所有警告:
import warnings
warnings.filterwarnings('ignore')
两者都没有成功。我怎样才能使来自 music21 的这些(或理想情况下,所有)警告静音? (我验证了我的数据 post-processing。)
如果您正在使用 ipython,您可以尝试将要执行的部分静音:
from IPython.utils import io
with io.capture_output():
< ...your code... >
否则,在源代码 (~/Lib/site-packages/music21) 中,您可以导航到 midi/translate.py 并使用注释块或类似内容调整第 585-6 行以禁用警告。
第三个选项可能是创建一个上下文管理器来静音打印,类似于 io.capture_output() 函数:
import io
import sys
class MuteWarn:
def __enter__(self):
self._init_stdout = sys.stdout
sys.stdout = open(os.devnull, "w")
def __exit__(self, exc_type, exc_val, exc_tb):
sys.stdout.close()
sys.stdout = self._init_stdout
with MuteWarn():
< ...your code... >
尝试:
>>> from music21 import midi # or your standard import
>>> def noop(input):
... pass
...
>>> midi.translate.environLocal.warn = noop
我们正在跟踪将警告系统移至 https://github.com/cuthbertLab/music21/issues/254 的 python 警告模块的现代化请求,以便您可以按惯用方式进行过滤。你在这里介绍的案例比 IMO 票上的原始案例更紧迫一些,所以我会发表评论。
我收到大量关于零时值和弦的 music21 警告:
WARNING: midi chord with zero duration will be treated as grace
我尝试用以下内容覆盖 music21.environment.Environment()
上的 warn
方法:
def silence(*args, **kwargs): pass
e = music21.environment.Environment()
setattr(e, 'warn', silence)
我也试过关闭所有警告:
import warnings
warnings.filterwarnings('ignore')
两者都没有成功。我怎样才能使来自 music21 的这些(或理想情况下,所有)警告静音? (我验证了我的数据 post-processing。)
如果您正在使用 ipython,您可以尝试将要执行的部分静音:
from IPython.utils import io
with io.capture_output():
< ...your code... >
否则,在源代码 (~/Lib/site-packages/music21) 中,您可以导航到 midi/translate.py 并使用注释块或类似内容调整第 585-6 行以禁用警告。
第三个选项可能是创建一个上下文管理器来静音打印,类似于 io.capture_output() 函数:
import io
import sys
class MuteWarn:
def __enter__(self):
self._init_stdout = sys.stdout
sys.stdout = open(os.devnull, "w")
def __exit__(self, exc_type, exc_val, exc_tb):
sys.stdout.close()
sys.stdout = self._init_stdout
with MuteWarn():
< ...your code... >
尝试:
>>> from music21 import midi # or your standard import
>>> def noop(input):
... pass
...
>>> midi.translate.environLocal.warn = noop
我们正在跟踪将警告系统移至 https://github.com/cuthbertLab/music21/issues/254 的 python 警告模块的现代化请求,以便您可以按惯用方式进行过滤。你在这里介绍的案例比 IMO 票上的原始案例更紧迫一些,所以我会发表评论。