在处理大型文本文件时,有没有办法破解IDLE(或Python本身)以切掉大型打印?

在处理大型文本文件时,有没有办法破解IDLE(或Python本身)以切掉大型打印?,python,python-idle,Python,Python Idle,我知道这可能是一个新手的错误,我应该得到一般的批评,但我希望有人有解决办法 我正在尝试编写这个程序来编辑大量非常大的文本文件。每当我以交互方式处理代码时,我经常会搞糟某些部分,并意外地打印整个文件。我知道如何通过切片或其他方式来避免这种情况,但每次我犯了一个错误,最终都会被闲置 我想那里的人可能会有一个黑客。当然,答案可能是在terminal/emacs/eclipse中执行,dummy 有人有解决办法吗,或者这只是人们忍受的东西 您可以尝试替换sys.stdout以限制产生的输出: # ove

我知道这可能是一个新手的错误,我应该得到一般的批评,但我希望有人有解决办法

我正在尝试编写这个程序来编辑大量非常大的文本文件。每当我以交互方式处理代码时,我经常会搞糟某些部分,并意外地打印整个文件。我知道如何通过切片或其他方式来避免这种情况,但每次我犯了一个错误,最终都会被闲置

我想那里的人可能会有一个黑客。当然,答案可能是在terminal/emacs/eclipse中执行,dummy


有人有解决办法吗,或者这只是人们忍受的东西

您可以尝试替换
sys.stdout
以限制产生的输出:

# override.py
import sys
class LimitedWriter:

    def __init__(self, limit):
            self.limit = limit
            self.old_stdout = sys.stdout
            self.active = True
    def toggle(self, flag):
            self.active = flag

    def write(self, value):
            if len(value) > self.limit and self.active:
                    value = value[:self.limit] + "..."
            self.old_stdout.write(value)

__lw__ = LimitedWriter(15) # limit to 15 characters
sys.stdout = __lw__
然后在每个会话中加载它:

>>> import override
>>> print "(o.o)" * 10
(o.o)(o.o)(o.o)...
>>>
>>> import sys
>>> sys.stdout.toggle(False)
>>> print "(o.o)" * 10
(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)(o.o)

我切换到前一段时间来帮助避免这种情况,没有回头看。对于交互式工作,很难打败。你找到解决方案了吗?这很酷,我没有想到要做的事情。非常感谢。