如何停止在python中打印一些特定行?

时间:2018-11-28 13:54:56

标签: python python-3.x

我有一个用于最小化chi2函数的脚本。 当我运行脚本时,它会向我打印一行“ J2000.0”,然后给出我的计算值。我知道这些连续的“ J2000.0”行是因为我确定了天体坐标系。

现在,我只想摆脱打印“ J2000.0”行。 我尝试了以下代码:

import sys, os

# Disable
def blockPrint():
    sys.stdout = open(os.devnull, 'w')

# Restore
def enablePrint():
    sys.stdout = sys.__stdout__



blockPrint()

但是它甚至在以后我想读取的输出上也会阻塞。 有人可以帮我提供一个代码,该代码将不会仅显示包含“ J2000.0”的行吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,某些解释器(如jupyter笔记本电脑)不会在控制台上打印。因此,如果您呼叫sys.stdout = sys.__stdout__,则会强制打印到控制台而不是浏览器。

以下代码对我有用。

import sys, os

class HandlePrint():

    def __init__(self):
        self.initial_stout = sys.stdout

    def blockPrint(self):
        sys.stdout = open(os.devnull, 'w')

    # Restore
    def resetPrint(self):
        sys.stdout = self.initial_stout

handle = HandlePrint()
handle.blockPrint()

print 'AAAA'

handle.resetPrint()
print 'BBBB'